Шаблон ListView ItemContainerStyle - PullRequest
       3

Шаблон ListView ItemContainerStyle

1 голос
/ 28 октября 2010

Я создал стиль для использования в качестве шаблона элемента моего ListView, который содержит CheckBox и TextBlock:

<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">
...

Флажок в шаблоне привязан к свойству IsSelected элемента представления списка:

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

И текстовый блок привязывается к свойству Value источника элемента представления списка:

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

Каждый из элементов в моем списке является объектом, который содержит два свойства, Значение и IsChecked .Я пытаюсь привязать свойство IsChecked моего объекта к свойству IsSelected моего элемента представления списка.Однако я не знаю, как получить доступ к свойству IsChecked моего объекта из шаблона ListViewItem.

У меня не было проблем с привязкой содержимого текстового блока к свойству Value моего объекта, но гдея бы даже поместил определение привязки, если бы я хотел, чтобы свойство IsChecked моего объекта было связано со свойством IsSelected элемента представления списка?

1 Ответ

2 голосов
/ 28 октября 2010

DataContext для каждого ListViewItem должен быть установлен на данные элемента, когда он создается родительским ListView, чтобы вы могли использовать:

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