我有 2 个窗口和 2 个用户控件第一个窗口使用第一个用户控件在列表视图中显示有关对象的简要信息,现在当用户单击列表中的对象(行)时,第二个窗口应该与第二个用户控件一起打开显示该对象的完整信息。
所以问题是我如何将该对象从 UC1 传递到 UC2。
我有 2 个窗口和 2 个用户控件第一个窗口使用第一个用户控件在列表视图中显示有关对象的简要信息,现在当用户单击列表中的对象(行)时,第二个窗口应该与第二个用户控件一起打开显示该对象的完整信息。
所以问题是我如何将该对象从 UC1 传递到 UC2。
您的问题的答案是使用 MVVM。例如:
列表窗口:
<Window>
<ItemsControl ItemSource = {Binding DataItems}>
<ItemsControl.ItemTemplate>
<userControls:YourLessDetailedUserControl/>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Window>
详细信息窗口:
<Window>
<userControls:YourMoreDetailedUserControl DataContext = {Binding DataItem}/>
</Window>
视图模型:
class MainWindowViewModel
{
public List<DataItemViewModel> DataItems {get;}
}
class DataItemViewModel
{
public ICommand OpenInDetailedWindow {get;}
//more properties here to describe your data item
}
class DetailedWindowViewModel
{
DataItemViewModel DataItem {get;}
}
ICommand中的应DataItemViewModel定义为打开详细信息窗口并将其DetailedWindowViewModel.DataItem设置为DataItemViewModel。
如果你是 MVVM 的新手,这一切看起来都很陌生。不过没关系!一开始每个人都很难。