繁体   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