c# - MVVM:强制组合框标签刷新

标签 c# mvvm data-binding combobox

我有一个绑定(bind)到 ObservableCollection<IDrive> 的 ComboBox

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

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

如何让这些标签更新?

开火PropertyChanged在我的 ObservableCollection 上不会刷新标签的内容,但会重置 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 中的属性(property)界面

最佳答案

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

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

关于c# - MVVM:强制组合框标签刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39947755/

相关文章:

Android 数据绑定(bind)/MVVM 模式 : computing view color based off Enum

c# - 将集合绑定(bind)到 WPF 列表框

c# - 加入 DataTables 通过 LINQ 获取新的 DataTable

c# - RegularExpressions.Regex.IsMatch 挂起

c# - MVVM动态DataGrid排序过滤

c# - 为什么在可移植库类中我无法实例化 ValidationContext 以及如何修复它?

javascript - 在模板中使用方法时,Angular 中的两种方式数据绑定(bind)

wpf - 当 UI 值更改时,将 ViewModel 上的结构属性绑定(bind)到 WPF 工具包 PropertyGrid 不会更新 ViewModel

c# - SshConnectionException : 'Server response does not contain SSH protocol identification.'

c# - T4模板多次处理输入