2010-10-28 3 views
1

J'ai créé le style à utiliser comme mon modèle d'élément de ListView qui contient un CheckBox et un TextBlock:ListView ItemContainerStyle Modèle

<Style x:Key="CheckBoxListStyle" TargetType="{x:Type ListView}"> 
      <Setter Property="SelectionMode" Value="Multiple"></Setter> 
      <Setter Property="ItemContainerStyle"> 
       <Setter.Value> 
        <Style TargetType="{x:Type ListViewItem}" > 
         <Setter Property="Template"> 
... 

La case à cocher dans le modèle est lié à la propriété IsSelected de la vue liste élément:

<CheckBox x:Name="itemCheckBox" Width="13" Height="13" Focusable="False" IsChecked="{Binding Path=IsSelected, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}"> 

Et le texte du TextBlock est liée à la propriété de la valeur de la source de l'affichage de la liste objet:

<TextBlock x:Name="textBlock" Padding="5,0,0,0" HorizontalAlignment="Stretch"> 
    <ContentPresenter Content="{Binding Path=Value}"/> 
</TextBlock> 

Chacun des éléments de ma liste est un objet qui contient deux propriétés: Valeur et IsChecked. Ce que j'essaie de faire est de lier la propriété IsChecked de mon objet à la propriété IsSelected de mon élément de vue liste. Cependant, je ne sais pas comment accéder à la propriété IsChecked de mon objet à partir du modèle ListViewItem.

Je n'ai eu aucune difficulté à lier le contenu du bloc de texte à la propriété Value de mon objet mais où placerais-je même la définition de liaison si je veux que la propriété IsChecked de mon objet soit liée à la propriété IsSelected de l'élément de vue liste?

Répondre

2

Le DataContext pour chaque ListViewItem doit être réglé sur les données de l'élément lors de sa création par le ListView parent de sorte que vous devriez être en mesure d'utiliser:

<Style TargetType="{x:Type ListViewItem}" > 
    <Setter Property="IsSelected" Value="{Binding IsChecked}"> 
    ... 
</Style> 
+0

Merci, ça fonctionne très bien. Cela semble si simple maintenant que j'y pense. – Flack