WPF - 将一个组合框的选定项目更改为另一个组合框的选定项目
我的.xaml文件中有两个组合框。我会打电话给第一个组合框“主组合框”。另一个组合框还包含与第一个主组合框中相同的一组值。WPF - 将一个组合框的选定项目更改为另一个组合框的选定项目
当我在第一个组合框中更改选择时,我想要将其他组合框的选择更改为相同的值。
我已经完成了它,如下所示。
在我的viewmodel中,我有以下几点。
private <MyClass> _firstComboBoxSelection;
public <MyClass> FirstComboboxSelection
{
set { _firstComboBoxSelection=value; }
get { return _firstComboBoxSelection ; }
}
private <MyClass> _secondComboBoxSelection;
public <MyClass> SecondComboboxSelection
{
set { _secondComboBoxSelection=value; }
get { return _secondComboBoxSelection ; }
}
组合框如下所示。
<ComboBox Name="cmbFirst"
SelectionChanged="cmbFirst_SelectionChanged"
SelectedItem="{Binding FirstComboboxSelection,Mode=TwoWay}"
ItemSource="{Binding MyData}"
DisplayMemberPath="Name" />
<ComboBox SelectedItem="{Binding SecondComboboxSelection,Mode=TwoWay}"
ItemSource="{Binding MyData}"
DisplayMemberPath="Name" />
迈德特是MyClass的一个的ObservableCollection。 MyClass包含属性名称。 在我的.xaml.cs文件中,我有以下内容。
private void cmbFirst_SelectionChanged(...)
{
_secondComboBoxSelection=_firstComboBoxSelection;
}
但它不会更改第二个组合框,因为我希望它。有人能帮我弄清楚我出错的地方吗?
在你第二个组合框的变化
<ComboBox SelectedItem="{Binding SecondComboboxSelection}"
到
<ComboBox SelectedItem="{Binding FirstComboboxSelection}"
您也可以尝试使用SelectedValuePath这样
<ComboBox Name="cmbFirst"
SelectionChanged="cmbFirst_SelectionChanged"
SelectedItem="{Binding FirstComboboxSelection,Mode=TwoWay}"
ItemSource="{Binding MyData}"
SelectedValuePath="Name"
DisplayMemberPath="Name" />
,并在代码中,你可以做这样的事情 -
private <MyClass> _firstComboBoxSelection;
public <MyClass> FirstComboboxSelection
{
set { _firstComboBoxSelection=value;
OnPropertyChanged(_firstComboBoxSelection); }
get { return _firstComboBoxSelection ;
}
}
我做了...但它没有工作:( –
你可以请尝试我更新的答案 – BSG
你能告诉我什么是OnPropertyChanged的命名空间?它说“OnPropertyChanged”不存在当前上下文 –
您不需要在事件背后的代码中执行此操作。您应该能够将第二个组合框绑定到xaml中的第一个组合框。您可以绑定到Xaml中的其他控件属性。 – mageos
你能举个例子吗?我是新来WPF –