2013-02-13 95 views
1

如何在數據網格上左鍵單擊只在選中某行時啓用? 這裏有一個例子:WPF DataGrid只在行上左鍵單擊

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

現在,當我點擊DataGrid中也執行該命令沒有行,但我只希望執行它,當我在一排點擊。

回答

1

你可以測試選擇的項目是空 這只是一種方式,也許有助於你 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; 
    } 

我知道這是不是最好的而是一種方式,直到你找到一個更好的主意;)

+0

這隻適用於啓動一次。因爲如果我選擇數據網格中的項目選定的值不爲空。如果我點擊數據網格背景,選定的項目也不爲空。我可以重置爲null或類似的東西? – user2025830 2013-02-13 13:39:04

+0

@ user2025830:您可以在命令完成時使_selectedPersons = null,我編輯我的代碼 – Akrem 2013-02-13 13:57:12

+0

謝謝。這對我行得通 – user2025830 2013-02-13 14:10:34