WPF 将对象从 window 的用户控件传递到另一个 window 的用户控件
WPF Pass object from window's Usercontrol to another window's Usercontrol
我有 2 个 windows 和 2 个用户控件,第一个 window 使用第一个用户控件在列表视图中显示有关对象的简要信息,现在当用户单击对象(行)时从列表中,第二个 window 应该打开,第二个用户控件显示该对象的完整信息。
所以问题是我如何将该对象从 UC1 传递到 UC2。
您的问题的答案是使用 MVVM。例如:
列表Window:
<Window>
<ItemsControl ItemSource = {Binding DataItems}>
<ItemsControl.ItemTemplate>
<userControls:YourLessDetailedUserControl/>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Window>
详情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;}
}
应定义 DataItemViewModel
中的 ICommand
以打开详细信息 Window,其中 DetailedWindowViewModel.DataItem
设置为 DataItemViewModel
。
如果您是 MVVM 的新手,这一切看起来都很陌生。不过没关系!刚开始大家都很难。
我有 2 个 windows 和 2 个用户控件,第一个 window 使用第一个用户控件在列表视图中显示有关对象的简要信息,现在当用户单击对象(行)时从列表中,第二个 window 应该打开,第二个用户控件显示该对象的完整信息。
所以问题是我如何将该对象从 UC1 传递到 UC2。
您的问题的答案是使用 MVVM。例如:
列表Window:
<Window>
<ItemsControl ItemSource = {Binding DataItems}>
<ItemsControl.ItemTemplate>
<userControls:YourLessDetailedUserControl/>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Window>
详情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;}
}
应定义 DataItemViewModel
中的 ICommand
以打开详细信息 Window,其中 DetailedWindowViewModel.DataItem
设置为 DataItemViewModel
。
如果您是 MVVM 的新手,这一切看起来都很陌生。不过没关系!刚开始大家都很难。