Я использую WPF и PRISM Framework для своего приложения. Я использую шаблон MVVM (Model - View - ViewModel), и я пытаюсь перенести событие MouseLeftButtonUp из выделенного кода в View в ViewModel (поэтому это событие будет соответствовать правилам MVVM). На данный момент у меня есть это:
View.xaml:
<DataGrid x:Name="employeeGrid" Height="250" Margin="25,0,10,0" ItemsSource="{Binding DetacheringenEmployeesModel}" IsReadOnly="True" ColumnHeaderStyle="{DynamicResource CustomColumnHeader}" AutoGenerateColumns="False" RowHeight="30">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseLeftButtonUp">
<i:InvokeCommandAction Command="{Binding EmployeeGrid_MouseLeftButtonUp}" />
</i:EventTrigger>
</i:Interaction.Triggers>
<DataGrid.Columns>
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, на который я только что нажал.
EDIT:
Привязка событий работала с Командой!
У меня есть это в моей DataGrid:
<DataGridTextColumn Header="Okt" Width="*" x:Name="test" >
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Tag" Value="{Binding Months[9].AgreementID}"/>
Как я могу привязать свойство Tag к ViewModel? Я знаю, что он уже связан с ViewModel, но, как вы можете видеть, значение приходит из массива / списка, и для каждого столбца значение отличается.