2014-10-25 1 views
0

행 외부를 클릭하면 행 선택을 제거하는 방법은 무엇입니까?WPF howto DataGrid의 행을 클릭하여 항목 선택을 취소하십시오.

enter image description here

관련 XAML 아래에 보여주는 이미지의 빨간색 영역에서와 마찬가지로 아래에 보여줍니다

<Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="*" /> 
      <RowDefinition Height="auto" /> 
     </Grid.RowDefinitions> 

     <DataGrid x:Name="ClientsList" Grid.Row="0" Grid.Column="0" CanUserAddRows="False" 
        SelectionMode="Extended" SelectionUnit="FullRow" 
        ItemsSource="{Binding ClientItems}" LostFocus="ClientsList_LostFocus" Background="Green"> 
     </DataGrid> 

     <StackPanel Margin="2" Grid.Row="1" Grid.Column="0" Orientation="Horizontal"> 
      <Button x:Name="AddButton" Margin="2,0,0,0" Content="+" Height="25" Width="40" Click="AddButton_Click"/> 
      <Button x:Name="DeleteButton" Margin="2,0,0,0" Content="-" Height="25" Width="40" Click="DeleteButton_Click"/> 
     </StackPanel> 
    </Grid> 

답변

2

. 다음 MouseUp 이벤트 처리기를 DataGrid에 추가하려고 시도하십시오.

private void OnDataGridMouseUp(object o, MouseButtonEventArgs e) 
    { 
     if (e.OriginalSource is ScrollViewer) 
     { 
      ((DataGrid) o).UnselectAll(); 
     } 
    } 
+0

Great. 고맙습니다. 그것이 해결책입니다. – Race

0

사용 이벤트 LostFocus 당신이 DataGrid의 초점을 잃을 때 식별하고 선택의 선택을 취소 할 수 해당 이벤트의 행 취소 선택

: 빈 영역은 다음 OriginalSource는거야 ScrollViewer (추가 스타일을 적용하지 않는 경우) 할 수있다 클릭 한 경우 경우

yourDataGrid.UnselectAll() 
+0

작동하지 않습니다. 빨간색 영역은 DataGrid의 일부입니다. 여기를 클릭하십시오. 'LostFocus' 이벤트가 발생하지 않습니다. – Race

+0

이 영역은 무엇입니까? 친절하게도 관련된'xaml' 코드를 보여주세요. – Shaharyar

+0

아래 질문과 xaml 코드를 업데이트했습니다. – Race

관련 문제