У меня есть combobox, чей SelectedItem привязан к свойству зависимости.Combobox 'SelectedItem, связанный с DependencyProperty, не обновляется
public IEnumerable<KeyValuePair<int,string>> AllItems
{
get { return _AllItems; }
set
{
_AllItems = value;
this.NotifyChange(() => AllItems);
}
}
public KeyValuePair<int, string> SelectedStuff
{
get { return (KeyValuePair<int, string>)GetValue(SelectedStuffProperty); }
set
{
SetValue(SelectedStuffProperty, value);
LoadThings();
}
}
public static readonly DependencyProperty SelectedStuffProperty =
DependencyProperty.Register("SelectedStuff", typeof(KeyValuePair<int, string>), typeof(MyUserControl), new UIPropertyMetadata(default(KeyValuePair<int, string>)));
И XAML:
<ComboBox DisplayMemberPath="Value"
ItemsSource="{Binding AllItems}"
SelectedItem="{Binding SelectedStuff, Mode=TwoWay}" />
Данные не правильно связаны и отображается, но при выборе другого значения в выпадающем списке, то set
не называется, ни называется мой LoadThings()
метод.
Есть ли очевидная причина?
Заранее спасибо
Редактировать
Я использовал Snoop для просмотра в выпадающем списке, а при изменении значения, выпадающий»SelectedItem также изменяется.
Я также проверил в коде, и свойство изменилось. Но мой метод не называется (как я не хожу через set
, так что проблема все еще там ...
Есть ли причина SelectedStuffProperty должен быть 'DependencyProperty '? Это берет большую часть контроля из ваших рук и помещает ее в суд суда. В большинстве ситуаций, подобных этому, требуется только стандартное свойство, которое вызывает уведомление об изменении свойств. –
Да, это часть UserControl, из которой я должен получить это значение через привязку в родительском контейнере. – Shimrod