2014-02-20 136 views
0

我写了一个简单的Window,它包含名为A的定制UserControl和名为B1,B2的两个RadioButton。自定义UserControl A包含一个名为C的InkCanvas以及一些其他控件。现在我想MultiBindingInkCanvas.EditingMode属性为两个RadioButton s的状态,说两个按钮都检查时,InkCanvas.EditingMode设为InkCanvasEditingMode.Ink,否则为InkCanvasEditingMode.None将自定义UserControl中的控件绑定到外部控件

我知道,在正常情况下,下面的代码可以让它工作:

<InkCanvas.EditingMode> 
    <MultiBinding Converter="{StaticResource editmodeconv}"> 
      <Binding ElementName="B1" Path="IsChecked" Mode="TwoWay"/> 
      <Binding ElementName="B2" Path="IsChecked" Mode="TwoWay"/> 
     </MultiBinding> 
</InkCanvas.EditingMode> 

然而,由于InkCanvas C已被包含在定制UserControl A,它已不再被曝光两按钮B1和B2。那么,如何实施呢?

回答

0

如果有可能,您可以尝试将单选按钮发送到usercontrols构造函数。这样你就可以参考按钮,因此可以检查它是否是这个或那个:)

或者像wpf提供的那样,你可以查找父层次结构并找到控制按钮。不确定最后的选择是你想在这种情况下做什么。我自己都还是蛮新的WPF :)

我通常与第一个解决方案去,但如果你等一下,我敢打赌,有人会拿出一些数据绑定就像你已经尝试自己:)

编辑:

发现这个职位。他们给你一些很好的例子,说明你可以做些什么。 http://social.msdn.microsoft.com/Forums/vstudio/en-US/ef295bd0-dafc-47ab-9453-25ad2a4dde30/binding-usercontrol-elements-properties?forum=wpf

0

这是因为你不应该。控制的关键在于封装某种数据的表示。

而不是尝试进入控件的内部,暴露您的控件作为控件的依赖属性包装的数据。这样,控件可以自由地将数据显示为单选按钮,或者完全不同,而应用程序的其余部分将继续工作。