提问者:小点点

WPF组合框主-从


我有2个组合盒主从这样:

<ComboBox ItemSource="{Binding MySource}" SelectedItem="{Binding MySelectedItem}" DisplayMemberPath="Description" />
<ComboBox ItemSource="{Binding MySelectedItem.Items}" IsSynchronizedWithCurrentItem="{x:Null}" />

但当我在第一个组合框中选择一个项目时,它有空的“项目”列表,而我已经用“项目”选择了其中一个项目,并在第二个组合框选择了项目。第二个组合框中的文本不为空。我也尝试过使用IsSynchronizedWithCurrentItem=“False”。

是什么问题呢?


共2个答案

匿名用户

我不明白你想说什么...但是我很确定您在修改“我的选择项”后没有通知属性更改,并且您忘记了模式=双向...

如果要在视图模型中使用SelectedItem:

Xaml:

<ComboBox ItemSource="{Binding MySource}" SelectedItem="{Binding MySelectedItem, mode=TwoWay}" DisplayMemberPath="Description" />
<ComboBox ItemSource="{Binding MySelectedItem.Items}"/>

视图模型:

private YourItemType _mySelectedItem;
public YourItemType MySelectedItem
{
 get { return (_mySelectedItem);}
set
{
if (_mySelectedItem != value)
{
 _mySelectedItem = value;
if (PropertyChanged != null)
   PropertyChanged(this, new PropertyChangedEventArgs("MySelectedItem"));
}
}

}

如果您只想进行过滤:

<ComboBox ItemSource="{Binding MySource}" DisplayMemberPath="Description" name="source"/>
<ComboBox ItemSource="{Binding SelectedItem.Items, ElementName=source}"/>

匿名用户

我发现了问题,是我在组合框中将命令与交互性相关联,这捕获了异常并且没有继续执行。