2015-11-08 1 views
0

J'ai rencontré quelques problèmes avec gridcontrol.Devexpress- Lignes de fond et de grille dans un contrôle de grille

Je dois styliser et mettre en forme une colonne de grille avec rembourrage, couleurs, polices et effets de survol.

<Style x:Key="SelectedRowStyle" TargetType="{x:Type dxg:RowControl}"> 
      <Setter Property="Foreground" Value="Black" /> 
      <Setter Property="FontFamily" Value="pack://application:,,,/PA.Tos.UI;component/ResourceDictionaries/#Brandon Grotesque Black" /> 
      <Setter Property="FontSize" Value="12" /> 
      <Setter Property="FontWeight" Value="Regular" /> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding 
       ElementName=GroupCodeListView,Path=DataContext.SelectedGroupCode.Deleted, 
       UpdateSourceTrigger=PropertyChanged}" Value="true"> 
        <Setter Property="Background" Value="Red" /> 
        <Setter Property="Foreground" Value="Black" /> 
       </DataTrigger> 
       <Trigger Property="IsMouseOver" Value="True"> 
        <Setter Property="Background" Value="{StaticResource HoverRowBorderColor}" /> 
        <Setter Property="Foreground" Value="Black" /> 
       </Trigger> 
       <Trigger Property="dxg:GridViewBase.IsFocusedRow" Value="True"> 
        <Setter Property="Background" Value="{StaticResource HoverRowBorderColor}" /> 
        <Setter Property="BorderBrush" Value="{StaticResource HoverStrokeColor}" /> 
        <Setter Property="BorderThickness" Value="1" /> 
        <Setter Property="Foreground" Value="Black" /> 

       </Trigger> 
      </Style.Triggers> 
     </Style> 


     <Style x:Key="CustomCellStyle" BasedOn="{StaticResource {dxgt:GridRowThemeKey 
      ResourceKey=LightweightCellStyle}}" TargetType="{x:Type dxg:LightweightCellEditor}"> 
      <Setter Property="MaxHeight" Value="25"/> 
      <Setter Property="MinHeight" Value="25"/> 
      <Style.Triggers> 

      </Style.Triggers> 
  1. En réponse à un vol stationnaire de la souris ou de sélection de rangée, i ont pour régler le bleu de la frontière à travers toutes les lignes de la grille. Seule la ligne de la grille inférieure est bleue à partir de maintenant à partir de ce qui précède. Le code applicable à présentateur cellcontent ne sera pas possible ici.

  2. En réponse à une icône de la corbeille cliquée, je dois afficher un arrière-plan rouge clair pour la ligne particulière. I bind (propriété viewmodel) SelectedGroupCode.Deleted = true à l'arrière-plan. La liaison est affichée dans le code. mais toutes les lignes sont peintes en rouge sauf la ligne en question.

  3. La largeur des lignes de la grille doit être définie. J'ai réussi à le définir pour les lignes horizontales uniquement en utilisant gridrowthemekey_rowcontrolcontainertemplate.

Je vous assure que j'ai lu certains threads précédents, mais cela prend trop de temps pour un sprint de mêlée.

Que manque-t-il?

+0

On ne sait pas comment vous utilisez ce style dans votre 'GridControl'? – nempoBu4

+0

Je place le style de ligne et le style de cellule dans les styles ci-dessus. – user1914725

Répondre

1

Si vous souhaitez modifier le style de cellule en réponse à un survol de la souris, vous pouvez utiliser l'extension de balisage RelativeSource dans la liaison DataTrigger. Si vous voulez vérifier si la ligne est focalisée, vous pouvez utiliser la propriété RowData.IsFocused.
Voici par exemple:

<Style x:Key="CustomCellStyle" TargetType="{x:Type dxg:LightweightCellEditor}" BasedOn="{StaticResource {dxgt:GridRowThemeKey ResourceKey=LightweightCellStyle}}"> 
    <Style.Triggers> 
     <DataTrigger Binding="{Binding IsMouseOver, RelativeSource={RelativeSource AncestorType={x:Type dxg:RowControl}}}" Value="True"> 
      <Setter Property="BorderBrush" Value="Blue" /> 
     </DataTrigger> 
     <DataTrigger Binding="{Binding RowData.IsFocused}" Value="true"> 
      <Setter Property="BorderBrush" Value="Blue" /> 
     </DataTrigger> 
    </Style.Triggers> 
</Style> 

Pour afficher un style personnalisé pour la ligne particulière, je vous suggère d'utiliser Conditional Formatting.
Voici par exemple:

<dxg:GridControl ...> 
    ... 
    <dxg:GridControl.View> 
     <dxg:TableView> 
      <dxg:TableView.FormatConditions>      
       <dxg:FormatCondition Expression="[Deleted]" FieldName="Profit"> 
        <dxc:Format Foreground="Red"/> 
       </dxg:FormatCondition> 
      </dxg:TableView.FormatConditions> 
     </dxg:TableView> 
    </dxg:GridControl.View> 
</dxg:GridControl>