【问题标题】:WPF - change the selected Item of one combobox to the selected item of another comboboxWPF - 将一个组合框的选定项更改为另一个组合框的选定项
【发布时间】:2015-05-09 16:05:57
【问题描述】:

我的 .xaml 文件中有两个组合框。我将第一个组合框称为“主组合框”。另一个组合框也包含与第一个主组合框相同的一组值。

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

我已经按照以下方式完成了。

在我的视图模型中,我有以下内容。

  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" />

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

  private void cmbFirst_SelectionChanged(...)
  {

        _secondComboBoxSelection=_firstComboBoxSelection;
  }

但它并没有像我想要的那样改变第二个组合框。有人可以帮我找出哪里出错了吗?

【问题讨论】:

  • 您不需要在事件背后的代码中执行此操作。您应该能够在 xaml 中将第二个组合框绑定到第一个组合框。您可以绑定到 Xaml 中的其他控件属性。
  • 你能举个例子吗?我是 WPF 新手

标签: c# wpf combobox


【解决方案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 ;
                }

  }

【讨论】:

  • 你能告诉我 OnPropertyChanged 的​​命名空间是什么吗?它说“OnPropertyChanged”在当前上下文中不存在
  • 你应该实现声明了单个 PropertyChanged 事件的 inotifyproperty changed 接口。如果某些对象的属性发生更改,您应该引发此事件。在此处查看示例stackoverflow.com/questions/17885923/…
  • 假设我有一组来自第二个组合框的组合框。 cmbFirst 中只有一个组合框。以及来自 cmbSecond 的一组组合框。我只希望一个特定的组合框将其选定项更改为第一个组合框的选定项。那我应该怎么改代码呢?
  • 您是否在一个组合框中创建了两个组合框?如果您只希望一个特定的组合框更改其选定项,则为该特定组合框编写选择更改事件。如果它仍然不起作用,请在堆栈溢出中提出一个单独的问题,其中包含您尝试过的内容以及您的工作代码,因为堆栈溢出中不允许在 cmets 部分进行扩展讨论。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多