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

时间:2015-05-09 16:05:58

标签: c# wpf combobox

我的.xaml文件中有两个组合框。我会打电话给第一个组合框"主要组合框"。另一个组合框也包含与第一个主组合框中相同的一组值。

当我更改第一个组合框中的选择时,我希望将其他组合框的选择更改为相同的值。

我在下面这样做了。

在我的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" />

MyData MyClass 的ObservableCollection。 MyClass 包含名称属性。 在我的.xaml.cs文件中,我有以下内容。

  private void cmbFirst_SelectionChanged(...)
  {

        _secondComboBoxSelection=_firstComboBoxSelection;
  }

但它不会像我想要的那样改变第二个组合框。有人可以帮我弄清楚我哪里出错了吗?

1 个答案:

答案 0 :(得分:1)

在你的第二个组合框改变

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

  }