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还是相当陌生:)

我通常会选择第一种解决方案,但我敢打赌,如果你等一等,就会有人想出一些数据绑定,就像你自己尝试过的那样:)

编辑:

我找到了这个帖子。他们给了你一些很好的例子,说明在你的情况下你能做些什么。
那是因为你不应该这样做。控件的全部要点是封装某种数据的表示

与其尝试深入控件内部,不如将控件包装为控件上的依赖项属性的数据公开。这样,控件就可以自由地将数据显示为单选按钮或完全不同的内容,应用程序的其余部分将继续工作