2017-06-26 1 views
1

Nouveauté ici sur SO et flambant neuf avec datagrid WPF.C# WPF Datagrid comment désactiver la cellule de sélection sur une colonne spécifique

J'ai cherché dans tous les sujets ouverts concernant Datagrid mais je ne trouve pas de réponse à mon problème. J'essaie d'afficher les données dans un DataGrid. Jusqu'ici tout va bien. J'essaie de laisser l'utilisateur sélectionner des cellules dans DataGrid. Jusqu'ici tout va bien. Je souhaite désactiver les cellules de sélection sur des colonnes spécifiques.

Voir l'image dans le lien.

Comment désactiver les cellules de sélection sur des colonnes de couple ou d'une colonne moyenne et laisser l'utilisateur de sélectionner uniquement les cellules sur des colonnes Mes1Mes2Mes3

Example of the datagrid

Répondre

2

Si vous souhaitez empêcher la sélection de cellules dans certaines colonnes, vous pouvez utiliser un DataGridCell style qui définit la propriété IsHitTestVisible de ces cellules à true:

<DataGrid x:Name="dataGrid1"> 
    <DataGrid.Resources> 
     <Style TargetType="{x:Type DataGridCell}"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding Column.Header, RelativeSource={RelativeSource Self}}" Value="Torque"> 
        <Setter Property="IsHitTestVisible" Value="False"/> 
       </DataTrigger> 
       <DataTrigger Binding="{Binding Column.Header, RelativeSource={RelativeSource Self}}" Value="Average"> 
        <Setter Property="IsHitTestVisible" Value="False"/> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </DataGrid.Resources> 
</DataGrid> 

Je joue simplement avec le code. Mais quand je clique sur une cellule dans la colonne par exemple Mes 1, puis utiliser le clavier pour naviguer, les cellules de la colonne de couple et moyenne peuvent se concentrer :-(

Je suppose que vous devrez définir la propriété IsEnabled à false alors:.

<DataTrigger Binding="{Binding Column.Header, RelativeSource={RelativeSource Self}}" Value="Torque"> 
    <Setter Property="IsHitTestVisible" Value="False"/> 
    <Setter Property="IsTabStop" Value="False"/> 
    <Setter Property="IsEnabled" Value="False"/> 
</DataTrigger> 
+0

Je suis en train de jouer avec le code Mais lorsque je clique sur une cellule dans la colonne par exemple Mes 1, puis utiliser le clavier pour naviguer, les cellules de la colonne moyenne couple et peut être concentré :-( – JulBat

1

On peut utiliser CellTemplate, Dans l'exemple ci-dessous l'une des cellules colonnes sera une image:

<DataGrid ItemsSource="{Binding Customers}" AutoGenerateColumns="False" > 
    <DataGrid.Columns> 
     <DataGridTextColumn Header="Name" Binding="{Binding Name}" /> 
     <DataGridTemplateColumn Header="Image" Width="SizeToCells" IsReadOnly="True"> 
      <DataGridTemplateColumn.CellTemplate> 
       <DataTemplate> 
        <Image Source="{Binding Image}" /> 
       </DataTemplate> 
      </DataGridTemplateColumn.CellTemplate> 
     </DataGridTemplateColumn> 
    </DataGrid.Columns> 
</DataGrid>