привязка элементов списка к словарю перечислений

все еще довольно новичок в WPF и особенно в привязке, но у меня есть перечисление, которое я буду использовать в качестве свойств объектов в другом месте моего проекта, но одной из самых первых точек запуска программы будет пользователь, выбирающий один элемент из поля со списком , который я хочу сопоставить с доступными параметрами перечисления. Первоначально я думал иметь объект словаря с параметром enum в качестве ключа и значением в виде строки для использования в представлении пользовательского интерфейса, и это то, над чем я работал. Я искал вокруг и думал, что у меня это есть, но поле со списком заполняется пустым.

У меня есть пара вопросов;

Во-первых, поскольку я до сих пор не совсем уверен, что к чему в отношении привязки, связана ли эта проблема с этим сообщением Ошибка целевого исключения, которую я нашел в комментарии к другому вопросу? Если да, значит ли это, что я пока лаю не по тому дереву? И есть ли другой способ для меня достичь моей цели?

Во-вторых, если это не связано, я что-то пропустил в приведенном ниже коде? В настоящее время я не получаю никаких ошибок в окне вывода, и проект компилируется нормально.

Вот перечисление (которое находится в отдельном пространстве имен, которое было добавлено к ссылкам на проект);

namespace WGM_lbr
{
public class Available_Wgms
{
    private static Dictionary<Wgms,string> _wgmColl;
    public static Dictionary<Wgms,string> WgmsCollection 
    {
        get 
        {
            return _wgmColl;
        }
    }

    static Available_Wgms()
    {
        _wgmColl = new Dictionary<Wgms, string>() {
            {Wgms.First, "First Dictionary item"},
        //other Dictionary Items go here
        }
    }

    public enum Wgms
    {
        First,
        //other Enum options go here
    }
}
}

Объявление моего ресурса в app.xaml

<Application x:Class="The_First.App"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:WGM="clr-namespace:WGM_lbr;assembly=WGM_lbr"
         StartupUri="MainWindow.xaml">
<Application.Resources>
    <BooleanToVisibilityConverter x:Key="b2v"/>
    <WGM:Available_Wgms x:Key="WgmList"/>
</Application.Resources>

And finally the combobox and binding xaml (in case its relevant, this lives in a nest of wpf controls, up to a grid which lives on page, which is being loaded to mainwindow.xaml via a frame control using the page as the source. Both the page and mainwindow have declared the WGM namespace - I cut these out as this post is already long enough);

<ComboBox Name="cmbWgmSelector" Margin="5,0" ItemsSource="{Binding Source={StaticResource WgmList}}"/>

Любая помощь/совет, которые могут быть предоставлены, приветствуется.


person Lindsay    schedule 26.11.2013    source источник


Ответы (1)


Обновите привязку, как показано ниже:

<ComboBox Name="cmbWgmSelector" Margin="5,0" DisplayMemberPath="Value" ItemsSource="{Binding Path=WgmsCollection, Source={StaticResource WgmList}}"/>
person Nitin    schedule 26.11.2013