我正在开发我的第一个WPF / MVVM应用程序,并且我遇到了对命令知识的限制!
这是我的情景。
我有一个窗口 - Customer.xaml。
它包含2个用户控件
每个人都拥有自己的视图模型。
因此,层次结构如下所示:
... Customer.xaml
...... ... viewCustomerSearch.xaml
... ... ... viewmodelCustomerSearch.xaml
...... ... viewCustomerDetails.xaml
... ... ... viewmodelCustomerDetails.xaml
我理解这是一种“并不罕见”的情况。
对于它的价值,用户通过双击viewCustomerSearch.xaml控件中的listview行来选择客户。
问题是:我现在需要告诉viewmodelCustomerDetails.xaml类用户刚刚选择了哪个客户。我根本无法解决这个问题。
有没有人在我声明我需要的命令,它如何连接,实现代码触发的位置等方面有任何帮助?
感谢任何帮助, DS
答案 0 :(得分:4)
通常,要进行视图间模型通信,您可以:
Caliburn.Micro和Prism等框架提供了事件聚合器模式的实现。
答案 1 :(得分:0)
或者,如果您不需要完全分离的视图模型,那么您的Customers.xaml可以将其DataContext设置为CustomersViewModel的实例。搜索视图将继承此数据上下文,将其列表视图绑定到客户列表,并设置SelectedItem属性以响应双击。详细视图DataContext将绑定到SelectedItem属性。
public class CustomersViewModel : ViewModelBase
{
public Customer SelectedItem
{
get { return _selectedItem; }
set { Set(() => SelectedItem, ref _selectedItem, value); }
}
private Customer _selectedItem;
public IEnumerable<Customer> Customers { get; private set; }
}
public class Customer : ViewModelBase
{
private string _name;
public string Name
{
get { return _name; }
set { Set(() => Name, ref _name, value); }
}
...
}