我有一个组合框,其 SelectedItem 绑定到依赖属性。
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
,所以问题仍然存在......