【问题标题】:MVVM: Force ComboBox labels to refreshMVVM:强制组合框标签刷新
【发布时间】:2016-10-09 19:38:01
【问题描述】:

我有一个绑定到ObservableCollection<IDrive> 的组合框

问题是IDrive不支持INotifyPropertyChange也不应该支持。

虽然我的 ComboBox 中的元素数量是固定的并且不会改变,但 ComboBox 中显示的标签可以并且将会改变。

如何更新这些标签?

在我的 ObservableCollection 上触发 PropertyChanged 不会刷新标签的内容,但会重置 SelectedItem,这是我什至不想要的副作用。

这是我当前的 XAML:

<ComboBox Grid.Column="1" Grid.Row="0" Grid.ColumnSpan="4"
          ItemsSource="{Binding Drives}" SelectedItem="{Binding SelectedDrive}"
          IsSynchronizedWithCurrentItem="True" DisplayMemberPath="Label"
          Margin="5,5,5,5" VerticalAlignment="Center" />

Label 是我的IDrive 界面中的属性

【问题讨论】:

    标签: c# mvvm data-binding combobox


    【解决方案1】:

    您需要将项目包装在 DriveViewModel : INotifyPropertyChanged 中,并重复相关属性。并以某种方式触发更改的事件。

    再想一想,我不确定 DisplayMemberPath 是否接受了这一点。您可能还需要一个 ItemTemplate。

    【讨论】:

    • 是的,它奏效了。 IDrive 现在有一个带有标签属性的包装器,当触发 PropertyChanged 时,标签会更新。谢谢:)
    猜你喜欢
    • 2012-11-03
    • 1970-01-01
    • 2015-02-01
    • 2015-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-11
    • 2018-07-04
    相关资源
    最近更新 更多