簡體   English   中英

綁定到另一個VM的用戶控件上的依賴項屬性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM