【发布时间】:2014-06-13 11:17:34
【问题描述】:
我有一个托管另一个 WPF UserControl 的 WPF UserControl,我已经制作了这两个并公开了各种依赖项属性。现在我在两者都有一个名为 IsSelected 的 DP,我需要将内部 UserControl 中的 IsSelected 绑定到外部 USerControl 的 IsSelected 以便在窗口或页面中使用外部 UserControl 时,我可以在用户选择内部时收到通知用户控件。
这有意义吗?
更新:我已尝试使用 Xaml 相对源绑定,但我的内部控件被用户交换,这意味着 Xaml 绑定指向错误的 UserControl。考虑一个画中画视频控件,用户可以在其中交换大图和小图,但驱动 IsSelected 属性的始终是大图。
所以我的 XAML 看起来像这样
MainWindow.xaml...
<Grid>
<MyControl1 />
</Grid>
MyControl1.xaml...
<Grid>
<MyControl2 x:Name="myControl2" />
</Grid>
当我将每个控件上的 DP 属性作为单独的 UserControls 直接绑定到它们时,它们都可以正常工作并正确绑定,我只需要弄清楚如何在内部将它们绑定在一起
在 MyControl1 后面的代码中,我尝试了以下变体...
var bind = new Binding("IsSelected");
bind.Source = myControl2;
bind.Mode = BindingMode.TwoWay;
this.SetBinding(MyControl1.IsSelectedProperty, bind);
有人有什么想法吗?
干杯
戴夫
【问题讨论】:
-
您是否尝试过类似
<MyControl2 x:Name="myControl2" IsSelected="{Binding Path=IsSelected, ElementName=myControl1}"/>的方法,其中myControl1在包含的UserControl 上设置为x:Name? -
嘿,总是有一条重要的信息遗漏了,对不起!通过鼠标单击控件,内部控件与另一个控件交换。它是一个画中画控件,用户可以切换小视频和大视频。所以 Xaml 绑定方法只在用户交换控件之前有效
标签: wpf binding user-controls