我的WPF应用程序出了问题。我需要通过不同的ViewModel进行通信,我不确切知道如何。我也不想使用一个框架,我已经找到了Mediator模式,我已经将它用作帮助类,它起作用我称其他类的方法,但我不知道是否是与其他ViewModel通信的完美方式。现在我的问题是我如何从View1填充一个组合框,从中选择项目到我的View2,ofc我每个都有不同的ViewModel,我想在两个上看到相同的。例如:HERE!。我知道我的ViewModel必须只对他们的视图发出命令,我认为我也可以使用Mediator这样做,但我真的不知道这是一个非常好的主意还是有更好的方法,我究竟该如何做它。我已经失去了一周的时间来搜索更好的事情,所以我想要一个最好的解决方案,而不是针对MVVM模式。提前谢谢。
<ComboBox VerticalAlignment="Center" Grid.Column="1" Grid.Row="0" IsEditable="False" IsSynchronizedWithCurrentItem="false" ItemsSource="{Binding combobox}" SelectedItem="{Binding selectedEmployee}" ItemTemplate="{StaticResource myResources}" />
MyViewModel
public ObservableCollection<ViewModelEmp> combobox
{
get { return this._combobox; }
set
{
this._combobox = value;
OnPropertyChanged("combobox");
}
}
我在我的ViewModelEmp类中使用ObserveableCollection,然后用我的数据库中的方法填充我的组合框,然后我在构造函数中调用它们:
public ViewModelEmp()
{
this._combobox = new ObservableCollection<ViewModelEmp>();
this.databaseconnect();
}
就像我在我的组合框中查看我的数据库中的数据一样,知道我是否想在其他视图和ViewModel中显示相同的内容我能做什么?
答案 0 :(得分:0)
您可以在中介上公开一个事件,以便通知所有人
监听器(例如您的第二个VM)其值已更改。 .NET有一种标准的方法:您可以实现INotifyPropertyChanged
接口:
http://msdn.microsoft.com/en-us/library/vstudio/system.componentmodel.inotifypropertychanged
示例/教程:http://www.dreamincode.net/forums/topic/208833-using-the-inotifypropertychanged-functionality/
最简单的方法是使用信使实施,请
阅读此答案:https://stackoverflow.com/a/16149579/690178