如何仅在选择行时启用数据网格的左键单击?这是一个例子:
<DataGrid>
    <DataGrid.InputBindings>
            <MouseBinding MouseAction="LeftDoubleClick" Command="{Binding LeftClickCommand}"/>
    </DataGrid.InputBindings>
</DataGrid>
现在,当我单击数据网格中的任何行时,该命令也会执行,但我只想在单击一行时执行它。
如何仅在选择行时启用数据网格的左键单击?这是一个例子:
<DataGrid>
    <DataGrid.InputBindings>
            <MouseBinding MouseAction="LeftDoubleClick" Command="{Binding LeftClickCommand}"/>
    </DataGrid.InputBindings>
</DataGrid>
现在,当我单击数据网格中的任何行时,该命令也会执行,但我只想在单击一行时执行它。
您可以测试所选项目是否为空,这只是一种可能帮助您 XAML 的方法:
        <Custom1:DataGrid IsSynchronizedWithCurrentItem="True" ItemsSource="{Binding Persons}" SelectedItem="{Binding SelectedPerson}"  >
        <i:Interaction.Triggers>
            <i:EventTrigger EventName="MouseDoubleClick">
                <Custom:EventToCommand CommandParameter="{Binding SelectedItem, ElementName=dg}" Command="{Binding AfficheCommand, Mode=OneWay}"/>
            </i:EventTrigger>
        </i:Interaction.Triggers>
后面的代码:
    private PersonModel _selectedPersons = new PersonModel();
    public PersonModel SelectedPerson
    {
        set
        {
            _selectedPersons = value;
        }
    }
    public ICommand AfficheCommand
    {
        get
        {
            return new DelegateCommand(AfficheText);
        }
    }
    private void AfficheText()
    {
        if(_selectedPersons != null)
           MessageBox.Show(_selectedPersons.FirstName);
       _selectedPersons  = null;
    }
我知道这不是最好的方法,而是一种方法,直到您找到更好的主意;)