Combobox не устанавливает значение по умолчанию, если значение является перечислением

У меня есть поле со списком, где я предоставляю параметры и значение для установки из моего контекста данных. XAML выглядит так:

<ComboBox HorizontalAlignment="Left" Width="120"
                  ItemsSource="{Binding Options}"
                  DisplayMemberPath="Text"
                  SelectedValuePath="OptionValue"
                  SelectedValue="{Binding Value, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"

Если Value и OptionValue являются int в моем тексте данных, все работает нормально. Пример:

public class MyDataContext : INotifyPropertyChanged
{   
    public event PropertyChangedEventHandler PropertyChanged;

    public class TextValue
    {
        private string _Text;
        private int _Value;

        public TextValue(string text, int value)
        {
            _Text = text;
            _Value = value;
        }

        public int OptionValue
        {
            get
            {
                return _Value;
            }
        }

        public string Text
        {
            get
            {
                return _Text;
            }
        }
    }

    private TextValue[] _Options = new TextValue[]
    {
        new TextValue("One", 1),
        new TextValue("Two", 2),
        new TextValue("Three", 3)
    };

    public TextValue[] Options
    {
        get
        {
            return _Options;
        }
    }

    private int _Value = 1;

    public int Value
    {
        get
        {
            return _Value;
        }
        set
        {
            if (_Value != value)
            {
                System.Diagnostics.Debug.WriteLine("New value set: " + value);
                _Value = value;

                if (PropertyChanged != null)
                {
                    PropertyChanged(this, new PropertyChangedEventArgs("Value"));
                }
            }
        }
    }
}

Но если вместо Value и OptionValue задано enum, значение по умолчанию в поле со списком не устанавливается. Если я изменю параметр в поле со списком, то значение будет установлено, поэтому я предполагаю, что привязка данных работает. Почему это так? Это странное поведение имеет место только в приложениях Магазина Windows, если при запуске в приложении WPF то же самое работает нормально. Enum-код:

public class MyDataContext : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;
    public enum Number { One, Two, Three }

    public class TextValue
    {
        private string _Text;
        private Number _Value;

        public TextValue(string text, Number value)
        {
            _Text = text;
            _Value = value;
        }

        public Number OptionValue
        {
            get
            {
                return _Value;
            }
        }

        public string Text
        {
            get
            {
                return _Text;
            }
        }
    }

    private TextValue[] _Options = new TextValue[]
    {
        new TextValue("One", Number.One),
        new TextValue("Two", Number.Two),
        new TextValue("Three", Number.Three)
    };

    public TextValue[] Options
    {
        get
        {
            return _Options;
        }
    }

    private Number _Value = Number.One;

    public Number Value
    {
        get
        {
            return _Value;
        }
        set
        {
            if (_Value != value)
            {
                System.Diagnostics.Debug.WriteLine("New value set: " + value);

                _Value = value;

                if (PropertyChanged != null)
                {
                    PropertyChanged(this, new PropertyChangedEventArgs("Value"));
                }
            }
        }
    }
}

0 ответов

Другие вопросы по тегам