1.如果您只有一些选定的键,并且按下这些选定的键只能实现某些功能,那么最佳方法如下 @H_419_16@<TextBox x:name="tBoxCouponSearch" Text="{Binding SearchMatchHomeorVisitor,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource EfesinputTextBox}" WIDth="170" Height="26" AcceptsReturn="False" TabIndex="40" textwrapPing="nowrap" KeyDown="tBoxCouponSearch_KeyDown_1"> <TextBox.inputBindings> <KeyBinding Key="Enter" Command="{Binding SearchTextBoxEnterKeyCommand}"/> <KeyBinding Key="left" Command="{Binding leftRightupdownARROWkeypressed}" /> <KeyBinding Key="Down" Command="{Binding leftRightupdownARROWkeypressed}" /> <KeyBinding Key="Up" Command="{Binding leftRightupdownARROWkeypressed}" /> <KeyBinding Key="Right" Command="{Binding leftRightupdownARROWkeypressed}" /> </TextBox.inputBindings> </TextBox>@H_502_17@
在上面的示例中,您可以看到单击这些特定键,这些命令将被执行并传递给viewmodel.然后像往常一样在viewmodel中调用函数.
2.如果要跟踪所有键,而不管按下哪个键,那么最好使用
@H_419_16@<TextBox x:name="tBoxCouponSearch" Text="{Binding SearchMatchHomeorVisitor,UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource EfesinputTextBox}" WIDth="170" Height="26" AcceptsReturn="False" TabIndex="40" textwrapPing="nowrap" KeyDown="tBoxCouponSearch_KeyDown_1"> <i:Interaction.Triggers> <i:EventTrigger Eventname="KeyUp"> <i:InvokeCommandAction Command="{Binding SearchTextBoxCommand}" CommandParameter="{Binding Path=Text,relativeSource={relativeSource AncestorType={x:Type TextBox}}}"/> </i:EventTrigger> </i:Interaction.Triggers> </TextBox>@H_502_17@现在这将触发所有按键或按键事件..你想要调用的任何函数都可以调用viewmodel.(这样做包括项目的DeBUG文件夹中的interaction.dll和intereactivity.dll(你会得到)在C盘中的程序文件中安装Blend时的那些dll.
3.如果是这样的话就像在一个特定的键上调用函数或者按下其他键上的一些其他函数被调用.然后你必须在代码后面做.
@H_419_16@private voID Window_KeyUp_1(object sender,KeyEventArgs e) { try { mainWindowviewmodel.Keypressed = e.Key;@H_502_17@通过这种方式,您可以捕获keyeventargs .. mainWindowviewmodel是viewmodel的一个实例.
现在在viewmodel中你喜欢这样
现在,viewmodel以下列方式实现此属性
@H_419_16@bool CanSearchTextBox { get { if (Keypressed != Key.Up && Keypressed != Key.Down && Keypressed != Key.left && Keypressed != Key.Right && MatchSearchList!=null) return true; else return false; } }@H_502_17@ 总结以上是内存溢出为你收集整理的.net – 从WPF(MVVM)中的View中将KeyEventArgs传递给ViewModel全部内容,希望文章能够帮你解决.net – 从WPF(MVVM)中的View中将KeyEventArgs传递给ViewModel所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)