C# 将自定义UserControl内的控件绑定到外部控件
我编写了一个简单的C# 将自定义UserControl内的控件绑定到外部控件,c#,wpf,C#,Wpf,我编写了一个简单的窗口,其中包含一个名为a的自定义用户控件和两个名为B1、B2的单选按钮。自定义UserControlA包含名为C的InkCanvas和一些其他控件。现在我想将多重绑定InkCanvas.EditingMode属性设置为两个单选按钮的状态,表示当两个按钮都选中时,InkCanvas.EditingMode设置为InkCanvasEditingMode.Ink,否则InkCanvasEditingMode.None 我知道,在正常情况下,以下代码可以使其正常工作: <InkC
窗口
,其中包含一个名为a的自定义用户控件
和两个名为B1、B2的单选按钮。自定义UserControl
A包含名为C的InkCanvas
和一些其他控件。现在我想将多重绑定InkCanvas.EditingMode
属性设置为两个单选按钮的状态,表示当两个按钮都选中时,InkCanvas.EditingMode
设置为InkCanvasEditingMode.Ink
,否则InkCanvasEditingMode.None
我知道,在正常情况下,以下代码可以使其正常工作:
<InkCanvas.EditingMode>
<MultiBinding Converter="{StaticResource editmodeconv}">
<Binding ElementName="B1" Path="IsChecked" Mode="TwoWay"/>
<Binding ElementName="B2" Path="IsChecked" Mode="TwoWay"/>
</MultiBinding>
</InkCanvas.EditingMode>
但是,由于自定义UserControl
A包含了InkCanvas
C,因此它不再暴露在两个按钮B1和B2中。那么,如何实现它呢?如果可能,您可以尝试将单选按钮发送给usercontrols构造函数。这样,您将有一个对按钮的引用,因此可以检查它是这个还是那个:)
或者像wpf提供的一样,您可以查找父层次结构并找到包含按钮的控件。不确定最后一个选项是你在这种情况下想做什么。我自己对wpf还是相当陌生:)
我通常会选择第一种解决方案,但我敢打赌,如果你等一等,就会有人想出一些数据绑定,就像你自己尝试过的那样:)
编辑:
我找到了这个帖子。他们给了你一些很好的例子,说明在你的情况下你能做些什么。
那是因为你不应该这样做。控件的全部要点是封装某种数据的表示
与其尝试深入控件内部,不如将控件包装为控件上的依赖项属性的数据公开。这样,控件就可以自由地将数据显示为单选按钮或完全不同的内容,应用程序的其余部分将继续工作