2009-03-29 10 views
0

Je le XAML suivant:Sélection de tous les éléments après la liaison WPF ListView

<ListView x:Name="debitOrderItems" ItemsSource="{Binding DebitOrderItems}"> 
    <ListView.ItemTemplate> 
    <DataTemplate> 
     <CheckBox x:Name="checkbox" Content="{Binding}" IsChecked="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListViewItem}}, Path=IsSelected}" /> 
    </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 

Binding une liste d'articles fonctionne très bien et je reçois une belle listview avec des cases à cocher, mais je voudrais les avoir tous sélectionnés immédiatement. Il existe une méthode SelectAll() sur ListView, mais quand puis-je l'appeler? DataContextChanged ne fonctionne pas car je l'associe avant que j'applique le DebitOrderItems dessus.

Répondre

3

Vous pouvez le faire en cas Loaded:

public Window() 
{ 
    InitializeComponent(); 
    Loaded += delegate 
    { 
     _listView.SelectAll(); 
    }; 
} 

Cela dit, je remettre en question votre conception. Normalement, vous auriez un modèle de vue pour chaque élément de la liste et vous lieriez la propriété IsChecked à une propriété de ce modèle de vue.

+0

Merci, même si j'espérais trouver un moyen de le faire en XAML. –

+0

La façon de le faire en XAML est via un modèle de vue. Il suffit que IsChecked soit lié à une propriété dans votre modèle de vue et assurez-vous que la propriété par défaut est true. –

+0

Merci Kent, je vais regarder mon design et ré-évaluer ... –