Tôi có một hộp văn bản và tôi đang cố gắng để vượt qua KeyEventArgs từ xem để viewmodel. Nhưng tôi không biết làm thế nào để thực hiện nó. Về cơ bản những gì tôi cần là nếu một số ký tự đặc biệt được gõ thì một số hàm sẽ được gọi nếu văn bản bình thường (như A, B, C..etc) được gõ rồi một số chức năng khác sẽ được gọi và nếu phím Enter được nhấn thì một số chức năng khác sẽ được gọi. Làm thế nào để làm điều đó trong MVVM. Tôi đang sử dụng WPF với VS 2012.Vượt qua KeyEventArgs để ViewModel từ Xem trong WPF (MVVM)
Trả lời
Có nhiều cách tiếp cận. Hãy để tôi giải thích từng cái một. 1.If bạn đã chỉ có một số phím tắt tùy định và nhấn những khóa đã chọn chỉ có một số chức năng sẽ được thực hiện sau đó là cách tiếp cận tốt nhất là sau
<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>
trong ví dụ trên bạn có thể thấy trên nhấp chuột trong những chìa khóa cụ thể các lệnh này sẽ được thực thi và được truyền tới viewmodel. sau đó trong viewmodel như thường lệ, bạn có thể gọi các chức năng.
2.If tất cả chìa khóa đang được theo dõi không phụ thuộc vào thực tế mà quan trọng được nhấn sau đó tốt hơn để sử dụng
<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>
Bây giờ điều này sẽ cháy khi tất cả các phím xuống hoặc phím lên sự kiện .. và bất kỳ chức năng bạn muốn gọi bạn có thể gọi trong viewmodel. (để làm điều này bao gồm interact.dll và intereactivity.dll trong thư mục Debug của dự án (bạn sẽ nhận được những dll sau khi cài đặt Blend trong tập tin chương trình trong ổ đĩa C.
3 .if nó là trường hợp như trên một phím cụ thể trên chức năng là để được gọi hoặc trên phím bấm của phím khác một số chức năng khác được gọi là. sau đó bạn phải làm tôi n mã phía sau.
private void Window_KeyUp_1(object sender, KeyEventArgs e)
{
try
{
mainWindowViewModel.KeyPressed = e.Key;
theo cách này, bạn có thể nắm bắt keyeventargs .. mainWindowViewModel là một thể hiện của viewModel. Bây giờ trong viewmodel bạn làm như thế này
private Key _keyPressed ;
public Key KeyPressed
{
get
{
return _keyPressed;
}
set
{
_keyPressed = value;
OnPropertyChanged("KeyPressed");
}
}
Bây giờ trong ViewModel thực hiện tài sản này theo cách sau
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): Đóng chế độ xem từ ViewModel?
- 2. Truyền giá trị giữa ViewModel trong MVVM trong WPF
- 3. Bắt đầu một hoạt ảnh từ ViewModel trong WPF/MVVM
- 4. MVVM Xem tham chiếu tới ViewModel
- 5. WPF - MVVM - Xem mô hình phân cấp
- 6. Xem qua MVC JSON ViewModel để xem
- 7. Tại sao không tốt để hiển thị Mô hình thông qua ViewModel trong Silverlight MVVM?
- 8. MVVM (với WPF) - Liên kết nhiều chế độ xem với cùng ViewModel
- 9. Sử dụng IMultiValueConverter để vượt qua nhiều CommandParameters để ViewModel
- 10. WPF/MVVM - làm thế nào để xử lý bấm đúp vào TreeViewItems trong ViewModel?
- 11. WPF, MVVM, ICommand, và kho
- 12. WPF: Làm thế nào để vượt qua toàn bộ kiểm soát như CommandParameter thông qua XAML?
- 13. WPF Điều hướng qua các chế độ xem sử dụng mẫu MVVM
- 14. Cách chính xác để khởi tạo một mô hình và xem trong WPF CAL MVVM
- 15. Mở/Đóng Xem từ ViewModel
- 16. Mở hộp thoại trong WPF MVVM
- 17. Databinding một enum để một ComboBox trong WPF + MVVM
- 18. Làm thế nào để xử lý chủ đề C# WPF trong mô hình xem MVVM
- 19. Mẫu MVVM, câu hỏi ViewModel DataContext
- 20. MVVM: CollectionView trong ViewModel hoặc CollectionViewSource trong xaml?
- 21. Vượt qua một biến từ bộ điều khiển để xem
- 22. WPF ICommand MVVM implementation
- 23. MVVM ViewModel rất nhiều thuộc tính
- 24. Hình ảnh dữ liệu WPF Image.Source trong MVVM
- 25. Trường tập trung WPF MVVM trên tải
- 26. Sử dụng WPF DataGridComboBoxColumn với MVVM - Liên kết với Thuộc tính trong ViewModel
- 27. Giao tiếp hai mô hình xem trong WPF MVVM
- 28. CollectionViewSource MVVM thực hiện cho WPF DataGrid
- 29. Lập trình đưa hàng Datagrid vào xem trong WPF, MVVM
- 30. Điều hướng giữa các Chế độ xem trong WPF MVVM