WPF - 将一个组合框的选定项目更改为另一个组合框的选定项目

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; 
    } 

但它不会更改第二个组合框,因为我希望它。有人能帮我弄清楚我出错的地方吗?

+0

您不需要在事件背后的代码中执行此操作。您应该能够将第二个组合框绑定到xaml中的第一个组合框。您可以绑定到Xaml中的其他控件属性。 – mageos

+0

你能举个例子吗?我是新来WPF –

在你第二个组合框的变化

<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 ; 
       } 

    } 
+0

我做了...但它没有工作:( –

+0

你可以请尝试我更新的答案 – BSG

+0

你能告诉我什么是OnPropertyChanged的命名空间?它说“OnPropertyChanged”不存在当前上下文 –