Как получить доступ к флажку внутри списка? - PullRequest
2 голосов
/ 22 марта 2011

У меня есть список, и я установил шаблон элементов, как показано ниже.

XAML:

            <ListBox ItemsSource="{Binding DataList}">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal">
                             <CheckBox x:Name="CheckBox"   HorizontalAlignment="Center" VerticalAlignment="Center" />
                            <TextBlock x:Name="TextBlock" Text="{Binding Title}"  HorizontalAlignment="Center" VerticalAlignment="Center" Margin="10,0,0,10" FontSize="26.667" TextWrapping="Wrap"/>
                        </StackPanel>
                    </DataTemplate>
                </ListBox.ItemTemplate>
                </ListBox>

Я хочу получить флажок для всех, который был выбран. Есть ли способчтобы получить флажок для каждого элемента, чтобы я мог проверить его свойство IsChecked.

Я могу придумать способ привязки свойства IsChecked. Но есть ли другой способ сделать это?

Ответы [ 5 ]

3 голосов
/ 22 марта 2011

Да.Один из способов сделать это - привязать свойство IsChecked.И если вы используете MVVM, вероятно, это правильный способ сделать это.

В любом случае, если вы не хотите идти по пути привязки и предполагаете, что хотите перебрать все элементы списка и подготовитьсясписок проверенных элементов, посмотрите, поможет ли это: WPF - Найти элемент управления из шаблона данных в WPF

2 голосов
/ 22 марта 2011

Если вы уже привязываете к свойству Заголовок в шаблоне элемента, то, безусловно, имеет смысл привязать и к IsChecked .

Если выдействительно, вы можете пройтись по визуальному дереву, используя VisualTreeHelper, чтобы найти CheckBox экземпляров.

1 голос
/ 15 декабря 2012

Могу поспорить, что это не может быть проще, чем:

    <ListBox SelectionMode="Multiple" >
      <ListBox.ItemTemplate>
         <DataTemplate>
            <CheckBox   
             IsChecked="{Binding Path=IsSelected, RelativeSource={RelativeSource AncestorType={x:Type ListBoxItem}}}"   
               Content="{Binding Path=Content,    RelativeSource={RelativeSource AncestorType={x:Type ListBoxItem}}}"   />
         </DataTemplate>
      </ListBox.ItemTemplate>
    </ListBox>
1 голос
1 голос
/ 22 марта 2011

Привязка свойства IsChecked к логическому свойству вашего экземпляра объекта, содержащегося в DataList, будет самым простым и чистым способом.В качестве альтернативы, если вы хотите избежать кода позади, вы можете написать прикрепленное свойство.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...