【发布时间】:2020-02-13 20:25:02
【问题描述】:
我有一个带有 DataGrid 的 WPF 应用程序,我希望用户能够双击一行以打开一个编辑对话框。
所以我在 ViewModel 中添加了一个 SelectedItem 属性,并将 InputBinding 添加到我的 Grid 中。现在我的 ViewModel 中有一个命令,当用户双击网格时会触发该命令。我也得到了正确的选定项目。到目前为止一切顺利。
问题是,当用户点击网格上的一些空白区域时,事件也会被触发(我在图片上标记了它)..
用户应该不能在空白处执行双击操作。因为在 SelectedItem 未更改的情况下触发了该事件。所以这是错误的。
我的 DataGrid 的 XAML 代码:
<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 方式解决此问题?
问候
【问题讨论】:
标签: c# wpf events mvvm datagrid