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 的新手,这一切看起来都很陌生。不过没关系!刚开始大家都很难。