Прив'язувати подію до ViewModel

Я використовую структуру wpf і PRISM для моєї програми. Шаблон, який я використовую, - це MVVM (Model - View - ViewModel), і я намагаюся показати MouseLeftButtonUp події з коду в View для ViewModel (таким чином, подія буде відповідати правилам MVVM). Зараз я маю це:

View.xaml:


        
            
                 
            
        

View.xaml.cs (з кодами):

public partial class UC1001_DashBoardConsultants_View
{
    public UC1001_DashBoardConsultants_View(UC1001_DashboardConsultantViewModel viewModel)
    {
            InitializeComponent();
            DataContext = viewModel;
    }
}

ViewModel.cs:

 public void EmployeeGrid_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
 {
    //insert logic here
 }

Основна ідея полягає в тому, що, коли я натискаю клітинку в DataGrid, подія загориться. Спочатку я спробував це в коді позаду, і це спрацювало. Я вже потрапив до EventTriggers, але коли я налагоджую та клацнув комірку, мій налагоджувач не входить до методу.

Хто-небудь має ідею як це виправити? Спасибі заздалегідь!

PS: Чи також він працює з параметром (об'єкт відправника), коли я роблю це так? Оскільки мені потрібен DataGrid у моєму ViewModel, щоб отримати ActiveCell, я просто натиснув.

РЕДАГУВАТИ:

Прив'язка до події працювала з командою!

У мене є це в моєму DataGrid:


     
           
7

1 Відповіді

InvokeCommandAction requires the ICommand to be bound not an event handler as you've bound (EmployeeGrid_MouseLeftButtonUp).

Таким чином, ви можете ввести команду в ViewModel і приєднатися до нього:

Переглянути модель:

public ICommand SomeActionCommand { get; set; }

XAML:


10
додано
Спасибі, що чудово працював! У вас також є пропозиція передавати DataGrid разом з командою (як параметр або щось), щоб я міг отримати доступ до нього в моєму ViewModel?
додано Автор Jelle Capenberghs, джерело
Мені потрібно отримати клітинку, яку я натиснув у моєму ViewModel, оскільки в комірці є TextBlock з інформацією, яка мені потрібна у ViewModel. - Вже відмічено як відповідь, оскільки ICommand перш за все було мені потрібним!
додано Автор Jelle Capenberghs, джерело
Я оновив своє запитання, це більш читабельно, то в коментарях!
додано Автор Jelle Capenberghs, джерело
@ Jelle Capenberghs: немає, передача всього контейнера інтерфейсу у ViewModel не є підходом MVVM, ViewModel не повинен нічого знати про конкретну реалізацію користувальницького інтерфейсу (сьогодні ви використовуєте usign, але завтра - TreeView, тому ViewModel має бути рефаунований, це є неправильно) Що ви намагаєтесь зробити в цій команді?
додано Автор sll, джерело
Я запропонував би обов'язковий текст сам , а не такий повний сценарій з подіями
додано Автор sll, джерело
Google для "Interaction.Behavuiurs"
додано Автор sll, джерело
Чи може хто-небудь сказати мені, який простір імен є "я"?
додано Автор Fandi Susanto, джерело
var chat = new Chat();
var chat = new Chat();
642 учасників

Обсуждение вопросов по C# / .NET / .NET Core / .NET Standard / Azure Сообщества-организаторы: — @itkpi — @dncuug