2012-04-23 95 views
0

我有一個WPF DataGrid。從WPF DataGrid中的特定列中移除焦點

當用戶按Tab鍵我不想讓焦點集中在第一列和第三列,所以當我到達一排我應該在第二列,當我再次按Tab鍵並達到3列它sholud移動到第4列。

我怎樣才能做到這一點在WPF的DataGrid

回答

4

的TabStopIndex值是什麼指示下一個被按下Tab鍵時字段應該接收焦點。此外,您可以完全通過設置KeyboardNavigation來禁用控件的TabStop。 IsTabStop附屬財產。

XAML:

<DataGrid ItemsSource="{Binding}" AutoGenerateColumns="False"> 
     <DataGrid.Resources> 
      <Style x:Key="NoTabStopStyle" TargetType="{x:Type DataGridCell}"> 
       <Setter Property="KeyboardNavigation.IsTabStop" Value="False"/> 
      </Style> 
     </DataGrid.Resources> 
     <DataGrid.Columns> 
      <DataGridTextColumn Binding="{Binding Path=FirstColumn}" CellStyle="{StaticResource NoTabStopStyle}"/> 
      <DataGridTextColumn Binding="{Binding Path=SecondColumn}"/> 
      <DataGridTextColumn Binding="{Binding Path=ThirdColumn}" CellStyle="{StaticResource NoTabStopStyle}"/> 
     </DataGrid.Columns> 
    </DataGrid> 
0

您可以禁用這些列:

<Window.Resources> 
    <Style x:Key="NotSelectableColumStyle" TargetType="{x:Type DataGridCell}"> 
     <Setter Property="IsEnabled" Value="False"/> 
    </Style> 
</Window.Resources> 

<Grid Name="LayoutRoot"> 
    <DataGrid ItemsSource="{Binding}" AutoGenerateColumns="False"> 
     <DataGrid.Columns> 
      <DataGridTextColumn Binding="{Binding Path=Age}" /> 
      <!--<Disable this column>-->  
      <DataGridTextColumn CellStyle="{StaticResource NotSelectableColumStyle}" Binding="{Binding Path=Name}" /> 
      <DataGridTextColumn Binding="{Binding Path=Address}" /> 
     </DataGrid.Columns> 
    </DataGrid> 
</Grid>