c# - 如何绑定(bind)到所属窗口的控制属性(来自对话框窗口)?

标签 c# wpf xaml data-binding

我的 friend 们,

我在 WPF 中遇到一个我无法解决的问题。我有两个窗口,MainwindowWindow1。我想将子窗口中的 ListView 绑定(bind)到父窗口中的控件属性。详细内容:

主窗口有一个在 XAML 中声明的控件,

<local:MyControl x:Name="View"/>

再往下,我有一个 Listview,它由“View”、“Session.Events”(Observable Collection)的公共(public)属性提供数据

<ListView ItemsSource="{Binding ElementName=View, Path=Session.Events}"/>

这工作正常,但现在我有第二个窗口以这种方式从主窗口生成:

Window1 MyWin1 = new Window1();
MyWin1.Owner = this;
MyWin1.ShowDialog();

第二个窗口有一个 ListView,它也需要由我的“View”控件提供。我想通过捆绑来做到这一点,但我咬掉了 dentry 。无论我尝试什么,它都不起作用。我确实有一个通过代码隐藏的工作版本...

Window1 Parent = (Window1)this.Owner;
MyListView.ItemsSource = Parent.CCView.Session.Events;

但我更喜欢在 XAML 中进行绑定(bind)并保存额外的代码。我也希望它能帮助我更好地理解绑定(bind),这对我来说在某种程度上仍然是一个谜。

非常感谢您并致以最诚挚的问候,
保罗

最佳答案

您可以跨 XAML 的逻辑树进行绑定(bind)。第二个窗口不是第一个窗口树的一部分。我认为在您的情况下最简单的方法应该是将 DataContext 传递到您的子窗口:

MyWin1 = new Window1 {
  DataContext = this.DataContext,
  Owner = this 
};
MyWin1.ShowDialog();

关于c# - 如何绑定(bind)到所属窗口的控制属性(来自对话框窗口)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7569212/

相关文章:

c# - windows phone 8.1 如何制作确定的圆形进度条

c# - 无法将类型 'CaSTLe.Proxies.IIdentityProxy' 的对象强制转换为类型 'MyApp.Web.Models.CurrentUser' 。使用起订量和单元测试

c# - 从 BitmapSource 中删除 Alpha

c# - Xamarin.Forms Shell 页面中的自定义 TitleView(顶部栏)

WPF奇怪的双击窗口切换

c# - 我可以通过 LINQ 绑定(bind)更新 UI 吗?

c# - 转换器不能应用于需要 IValueConverter 类型的属性

c# - 在 Visual Studio 中调试 Azure 函数

c# - 从 UserControl 的资源文件运行 jQuery 脚本到客户端的脚本管理器

c# - MaxConcurrentCalls = 0 但在本地使用 azure 服务总线时仍然有工作线程