2014-02-20 138 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

這是因爲你不應該。控制的關鍵在於封裝某種數據的表示。

而不是嘗試進入控件的內部,暴露您的控件作爲控件的依賴屬性包裝的數據。這樣,控件可以自由地將數據顯示爲單選按鈕,或者完全不同,而應用程序的其餘部分將繼續工作。