WPF 将对象从窗口的用户控件传递到另一个窗口的用户控件

Posted

技术标签:

【中文标题】WPF 将对象从窗口的用户控件传递到另一个窗口的用户控件【英文标题】:WPF Pass object from window's Usercontrol to another window's Usercontrol 【发布时间】:2021-11-12 17:07:52 【问题描述】:

我有 2 个窗口和 2 个用户控件第一个窗口使用第一个用户控件在列表视图中显示有关对象的简要信息,现在当用户单击列表中的对象(行)时,第二个窗口应该打开第二个用户控件显示该对象的完整信息。

所以问题是我如何将该对象从 UC1 传递到 UC2。

【问题讨论】:

您好,或许这对您有帮助:***.com/a/69223447/4095782 请提供足够的代码,以便其他人更好地理解或重现问题。 【参考方案1】:

您的问题的答案是使用 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;

DataItemViewModel 中的ICommand 应定义为打开详细信息窗口,其中DetailedWindowViewModel.DataItem 设置为DataItemViewModel

如果您是 MVVM 新手,这一切看起来都非常陌生。不过没关系!一开始每个人都很难。

【讨论】:

以上是关于WPF 将对象从窗口的用户控件传递到另一个窗口的用户控件的主要内容,如果未能解决你的问题,请参考以下文章

如何从作为wpf mvvm模式中的窗口打开的视图模型中关闭用户控件?

WPF,从用户控件中更新主窗口中的状态栏

在android中将值从一个窗口传递到另一个窗口

从用户控件WPF调用主窗口中的公共功能

如何使用 WPF 用户控件关闭父窗口

wpf中用户控件更改期间的动画