![](/img/trans.png)
[英]Can I set my user control datacontext in xaml via a dependency property bound to a property on the parent control in wpf?
[英]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.