1

行が選択されている場合にのみ有効にするデータグリッドの左クリックを行うにはどうすればよいですか? 以下に例を示します。

<DataGrid>
    <DataGrid.InputBindings>
            <MouseBinding MouseAction="LeftDoubleClick" Command="{Binding LeftClickCommand}"/>
    </DataGrid.InputBindings>
</DataGrid>

データグリッドの行をクリックしないとコマンドも実行されますが、行をクリックしたときにのみ実行したいです。

4

1 に答える 1

1

選択したアイテムがnullであるかどうかをテストできます。これは、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;
    }

私はそれが最善の方法ではなく、あなたがより良いアイデアを見つけるまでの方法であることを知っています;)

于 2013-02-13T13:00:52.350 に答える