У меня есть приложение WPF с DataGrid, и я хочу, чтобы пользователь мог дважды щелкнуть строку, чтобы открыть диалоговое окно редактирования.
Поэтому я добавил свойство SelectedItem в свойViewModel и InputBinding к моей сетке. Теперь у меня есть команда в моей ViewModel, которая запускается, когда пользователь дважды щелкает по сетке. Я тоже получил правильно выбранный предмет. Пока все хорошо.
Проблема в том, что событие также запускается, когда пользователь нажимает на пустое место в сетке (я пометил его на рисунке) ..
Пользователь не должен иметь возможность выполнить действие двойного щелчка на пустых местах. Поскольку событие вызывается с SelectedItem без изменений. Так что это неправильно.
Мой XAML-код для DataGrid:
<DataGrid Name="dgSafetyFunction" AutoGenerateColumns="False" ItemsSource="{Binding SafetyFunctionList}" Margin="0,0,0,45"
SelectedItem="{Binding Path=SelectedItem, Mode=TwoWay}" IsReadOnly="True" IsSynchronizedWithCurrentItem="True" SelectionUnit="FullRow">
<DataGrid.InputBindings>
<MouseBinding
MouseAction="LeftDoubleClick"
Command="{Binding OnDataGridDoubleClickCommand}"/>
</DataGrid.InputBindings>
<DataGrid.Columns>
<DataGridTextColumn Header="ID" Binding="{Binding ID}"/>
<DataGridTextColumn Header="Name" Binding="{Binding Name}"/>
<DataGridTextColumn Header="Beschreibung" Binding="{Binding Description}"/>
<DataGridTextColumn Header="Projekt ID" Binding="{Binding ProjectID}"/>
</DataGrid.Columns>
</DataGrid>
Свойство SelectedItem:
private SafetyFunctionModel m_SelectedItem;
public SafetyFunctionModel SelectedItem
{
get
{
return m_SelectedItem;
}
set
{
if (value != m_SelectedItem)
{
m_SelectedItem = value;
OnPropertyChanged("SelectedItem");
}
}
}
Как я могу это исправить способом MVVM?
С уважением