簡體   English   中英

從用戶控件中xaml的依賴項屬性為我的視圖模型分配值

[英]Assigning a value to my view model from my dependency property from xaml in a user control

我需要捕獲一個按鍵事件,以從我的自定義DataGrid`公共類ExtendedDataGrid:DataGrid {}獲取鍵值,並使其在按下了Key的視圖模型中觸發一個事件。 確切地說,我想檢查是否有人按下Delete鍵,然后從當前選定的記錄中刪除一條記錄,而無需使用后面的代碼,因為我的所有邏輯都在我的視圖模型中。

我的ExtendedDataGrid控件是新控件,我創建了一個GridColumns集合(我自己的類定義),該集合設置視圖模型中的列,並在視圖模型將值發送到DependencyProperty的地方工作。 但是,這次,我想從PreviewKeyDown捕獲鍵盤輸入並將其發送到視圖模型。

我在ExtendedDataGrid類中創建了一個方法,並將其放置在構造函數中: PreviewKeyDown += OnKeyDown ; 這會按預期觸發事件。 我創建了一個DependencyProperty:

public static readonly DependencyProperty KeyDownValueProperty =
    DependencyProperty.Register("KeyDownValue", typeof(Key), typeof(ExtendedDataGrid), null, null);

然后,我創建了一個方法:

    private void OnKeyDown(object Sender, KeyEventArgs Args)
    {
        SetValue(KeyDownValueProperty, Args.Key);
    }

然后,我聲明了屬性包裝器:

    [Bindable(true)]
    public Key KeyDownValue
    {
        get
        {
            return (Key)GetValue(KeyDownValueProperty);
        }

        set
        {
            SetValue(KeyDownValueProperty, value);
        }
    }

我做的最后一件事是在XAML中添加KeyDownValue =“ {Binding Path = KeyThatWasPressed}”。 在我的Key類型的視圖模型中,這被聲明為公共屬性。

我希望按下該鍵會觸發我創建的事件,然后觸發該事件,然后將該值發送到Dependency Property,並使其通知我的視圖模型中的更改/值,但事實並非如此。

一旦我掌握了這一點,那么其他所有東西都將落到位,因為我是一個快速學習者。 我只是在這里缺少一些基礎知識。 任何幫助將是極大的。 一旦學到了足夠的知識,我就可以開始回答有關該主題的其他新手問題。

當您將VM綁定到ExtendedDataGrid時,請嘗試將綁定模式設置為TwoWay

KeyDownValue="{Binding Path=KeyThatWasPressed, Mode=TwoWay}"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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