[英]Dependency Property on a usercontrol that is bound to another VM
我遇到了以下問題:我當前正在創建一個屏幕鍵盤,它是一個具有自己的viewmodel的用戶控件。
<UserControl.DataContext>
<Binding Source="{StaticResource Locator}" Path="AlphaNumericKeyboard" />
</UserControl.DataContext>
我正在嘗試添加一個名為KeyboardAlphaMode
的依賴項屬性,該屬性可以由使用此usercontrol的其他視圖模型切換
public static readonly DependencyProperty KeyboardAlphaModeProperty = DependencyProperty.Register("KeyboardAlphaMode",
typeof(UIKeyboardAlphaMode), typeof(AlphaNumericKeyboardView),
new FrameworkPropertyMetadata(UIKeyboardAlphaMode.LowerCase, new PropertyChangedCallback(KeyboardAlphaModeCallBack)));
private static void KeyboardAlphaModeCallBack(DependencyObject d, DependencyPropertyChangedEventArgs e){ ... }
但是,當我嘗試從另一個視圖綁定到此屬性時,從未觸發過該回調。
<k:AlphaNumericKeyboardView x:Name="alphaNumericKeyboard" KeyboardAlphaMode="{Binding KeyboardAlphaMode, UpdateSourceTrigger=PropertyChanged}">
</k:AlphaNumericKeyboardView>
我在這里想念什么? 二傳手? 觸發?
或這只是一個想法,具有依賴項的用戶控件可以綁定到視圖模型嗎? 還是必須將其自身綁定?
編輯-2014年10月10日下午1:31重新考慮了整個解決方案后,我想到了以下解決方案。 我將Dependency屬性綁定到視圖的視圖模型,並讓視圖模型彼此交互,而不是讓其他視圖模型與該特定視圖對話...
這是該代碼..
Binding alphaModeBinding = new Binding("KeyboardAlphaMode")
{
Mode = BindingMode.TwoWay,
TargetNullValue = UIKeyboardAlphaMode.LowerCase,
FallbackValue = UIKeyboardAlphaMode.LowerCase
};
this.SetBinding(KeyboardAlphaModeProperty, alphaModeBinding);
我還使依賴項屬性受保護,因此沒有人可以訪問它。 除非有更好的方法來跟蹤屬性更改,否則我暫時堅持使用此方法。
同樣,不確定這是否是最佳解決方案,但可以完成工作。
在綁定上嘗試Mode=TwoWay
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.