2017-03-03 1 views

Répondre

1

MISE À JOUR

Vous pouvez créer un ItemContainerStyleSelector, où vous pouvez appliquer un style personnalisé basé sur l'élément en cours dans la liste.

public class CustomItemContainerStyleSelector : StyleSelector 
{ 
    public Style MyStyle1 { get; set; } 
    public Style MyStyle2 { get; set; } 

    protected override Style SelectStyleCore(object item, DependencyObject container) 
    { 
     var obj = (MyObject)item; 
     if (/* Some kind of condition based on the bound object */) 
     { 
      return MyStyle1; 
     } 
     else 
     { 
      return MyStyle2; 
     } 
    } 
} 

Vous pouvez utiliser ce sélecteur de style comme ceci:

<ListView ItemsSource="{Binding SomeList}"> 
    <ListView.ItemContainerStyleSelector> 
     <local:CustomItemContainerStyleSelector> 
      <local:CustomItemContainerStyleSelector.MyStyle1> 
       <Style TargetType="ListViewItem"> 
        <Setter Property="BorderThickness" Value="5,0,0,0"/> 
        <Setter Property="BorderBrush" Value="Red"/> 
       </Style> 
      </local:CustomItemContainerStyleSelector.MyStyle1> 
      <local:CustomItemContainerStyleSelector.MyStyle2> 
       <Style TargetType="ListViewItem"> 
        <Setter Property="BorderThickness" Value="5,0,0,0"/> 
        <Setter Property="BorderBrush" Value="Yellow"/> 
       </Style> 
      </local:CustomItemContainerStyleSelector.MyStyle2> 
     </local:CustomItemContainerStyleSelector> 
    </ListView.ItemContainerStyleSelector> 
</ListView> 
+0

Eh bien, quand u = activer SelectionMode multiples, tout droit en mouvement ListViewItem montrer cases à cocher. J'ai besoin de coller cette bordure vers la gauche, de sorte que la case à cocher apparaîtra sur le côté droit de cette bordure comme ceci http://joxi.ru/v294aELS3RaaMm – Exodus009

+0

Vous avez raison, j'ai mis à jour ma réponse. –