2013-02-13 3 views
1

Как я могу сделать левый клик на datagrid включен только при выборе строки? вот пример:WPF DataGrid Left Нажмите только на строке

<DataGrid> 
    <DataGrid.InputBindings> 
      <MouseBinding MouseAction="LeftDoubleClick" Command="{Binding LeftClickCommand}"/> 
    </DataGrid.InputBindings> 
</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

это работает только один раз на applicationstart. потому что, если я выбираю элемент в datagrid, выбранное значение не равно нулю. и если я нажму на фон datagrid, выбранный элемент также не будет нулевым. могу ли я сбросить его до нуля или что-то вроде этого? – user2025830

+0

@ user2025830: вы можете сделать _selectedPersons = null, когда вы выполните команду, я редактирую свой код – Akrem

+0

спасибо. это подходит для меня – user2025830

Смежные вопросы