我有一個文本框,我試圖將KeyEventArgs從視圖傳遞給viewmodel。但我不知道如何實現它。基本上我需要的是如果輸入一些特殊字符,那麼如果輸入普通文本(如A,B,C..etc),則會調用某個函數,然後調用其他某個函數,如果按Enter鍵,則某些其他函數是被調用的。如何在MVVM中做到這一點。我正在用VS 2012使用WPF。將KeyEventArgs傳遞給ViewModel從WPF中的視圖(MVVM)
8
A
回答
18
有很多方法。讓我一一解釋。 1.如果您只選擇了一些關鍵和緊迫的選擇鍵只是一些功能將被實現,那麼最好的辦法是在上面的例子中,以下
<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>
你可以在這些特定按鍵的點擊見這些命令將被執行並傳遞給視圖模型。然後像往常一樣在viewmodel中調用函數。
2.如果所有鍵都被跟蹤,不論哪個鍵被按下,然後更好的事實,使用
<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">
<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>
現在這將在所有重點防火向下或向上鍵..事件,你的任何功能打電話給你可以調用viewmodel(這樣做包括interactive.dll和intereactivity.dll在項目的Debug文件夾中(你將在C驅動程序中安裝Blend之後得到這些dll文件)
3如果在某個特定的按鍵上就是這樣的功能被調用,或者在按下其他按鍵的某個其他功能時被調用。然後你必須做我後面有n個代碼。
private void Window_KeyUp_1(object sender, KeyEventArgs e)
{
try
{
mainWindowViewModel.KeyPressed = e.Key;
以這種方式你可以捕獲keyeventargs .. mainWindowViewModel是viewModel的一個實例。 現在在視圖模型你喜歡這款
private Key _keyPressed ;
public Key KeyPressed
{
get
{
return _keyPressed;
}
set
{
_keyPressed = value;
OnPropertyChanged("KeyPressed");
}
}
現在,在視圖模型以下列方式
bool CanSearchTextBox
{
get
{
if (KeyPressed != Key.Up && KeyPressed != Key.Down && KeyPressed != Key.Left && KeyPressed != Key.Right && MatchSearchList!=null)
return true;
else
return false;
}
}
實現此屬性
相關問題
- 1. WPF MVVM並將viewmodels傳遞給視圖
- 2. 將Parm從App.xaml傳遞給ViewModel - Silverlight MVVM
- 3. 可以將視圖傳遞給MVVM中的ViewModel嗎?
- 4. Silverlight將視圖中的值傳遞給ViewModel MVVM
- 5. 從Viewmodel WPF MVVM視圖重定向
- 6. wpf mvvmlight將數據傳遞給viewmodel
- 7. 將'this'從視圖傳遞到viewmodel
- 8. 使用MVVM-Light中的RelayCommand將UIElement傳遞給ViewModel
- 9. 如何將StaticResources傳遞給MVVM中的ViewModel?
- 10. 將對象從父視圖傳遞到MVVM中的子視圖
- 11. 如何將ViewModel傳遞給使用帶MVVM和WPF的WF4的CodeActivity
- 12. 使用ViewModel將視圖中的數據傳遞給控制器
- 13. 如何將對象傳遞給ViewModel在MVVM中構建時?
- 14. 如何將數據傳遞給MVVM Light中的不同視圖?
- 15. 棱鏡MVVM - 如何將IEventAggregator傳遞給我的ViewModel
- 16. MVVM:如何將參數傳遞給ViewModel的構造函數
- 17. 將對象傳遞給viewmodel
- 18. 將ViewModel傳遞給ActionResult mvc4
- 19. WPF MVVM-Light如何在ViewModel中使用傳遞的DragEventArgs
- 20. 將多個參數(包括類型)傳遞給WPF中的ViewModel
- 21. MVVM(與WPF) - 將多個視圖綁定到相同的ViewModel
- 22. 將參數傳遞給自定義控件ViewModel,MVVM
- 23. Xamarin.IOS:MVVMCross從視圖傳遞參數到ViewModel
- 24. WPF MVVM Light和modren UI-將對象傳遞到輔助視圖
- 25. 將nsmutabledictionary中的數據從子視圖傳遞給父視圖
- 26. 如何將View對象發送給WPF MVVM中的ViewModel?
- 27. 將NSArray從self.view傳遞給子視圖
- 28. 將link_to從視圖傳遞給javascript?
- 29. WPF MVVM DataTemplate:從父視圖模型注入模板ViewModel
- 30. WPF MVVM:從視圖模型