一个多星期以来,我一直在努力让数据绑定在 WPF 中工作。我确实在这里获得了有关 DataContext 的宝贵帮助,并且我确实通过 DependencyProperties 使数据绑定工作。当我学习数据绑定时,我遇到了很多关于INotifyPropertyChanged
它在很多方面比 DP 更好的讨论。我想我会试一试。
我正在使用 Josh Smith 的基本 ViewModel 类,而我的 ViewModel 就是从它派生的。但是,我在让数据绑定工作时遇到了一些麻烦,希望这里有人能告诉我哪里出错了。
在我的 ViewModel 类中,我有一个ObservableCollection<string>
. 在我的 GUI 中,我有一个绑定到这个 OC 的组合框,即
<ComboBox ItemsSource="{Binding PluginNames}" />
GUI的DataContext设置为ViewModel,即
private ViewModel _vm;
public GUI()
{
InitializeComponent();
_vm = new ViewModel();
this.DataContext = _vm;
}
并且 ViewModel 具有名为“PluginNames”的 OC:
public class ViewModel
{
public ObservableCollection<string> PluginNames; // this gets instantiated and added to elsewhere
}
加载 GUI 时,会调用一个方法来实例化 OC 并向其添加插件名称。OC修改后,我调用RaisePropertyChanged( "PluginNames")
. 我期待,因为 WPF 数据绑定模型认识到 INotifyPropertyChanged,这就是我需要做的所有事情,它会“神奇地工作”并使用加载的插件更新组合框项目......但它没有。
有人可以指出我在这里做错了什么吗?谢谢!
更新:我不知道为什么,但现在不是没有进行任何明显的更新,而是根本找不到该属性。我认为我真的很愚蠢,并且在某个地方错过了重要的一步。