WPF - шаблон альтернативного элемента в ListView - PullRequest
1 голос
/ 05 октября 2011

В пользовательском представлении списка каждая строка состоит из изображения и текста. Каждая четная строка, изображение должно быть слева, а каждая нечетная строка - справа.

Будучи новичком в WPF, я задаюсь вопросом, как проще всего это сделать и повторно использовать большую часть написанного на XAML.

Шаблоны нечетных / четных элементов действительно отличаются только тем, что изображение находится на одной или другой стороне текста.

1 Ответ

2 голосов
/ 05 октября 2011

Я считаю, что вы можете использовать триггер в стиле, чтобы достичь этого.Вы можете расположить изображение по левому краю, а в триггере изменить его на правое.

Что-то похожее на:

<Style.Triggers>
    <Trigger Property="ItemsControl.AlternationIndex" Value="1">
           <!-- Change image position here -->
    </Trigger>
<Style.Triggers>

Подробнее о том, как использовать AlternationIndex здесь .

Редактировать - Рабочий образец

    <Style TargetType="ListViewItem">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type ListViewItem}">
                        <DockPanel>
                            <Image Source="/WpfApplication;component/Images/TestImage.jpg" DockPanel.Dock="Left" x:Name="rowImage"/>
                            <TextBlock Text="Testing..." Background="{TemplateBinding Background}"/>
                        </DockPanel>
                    <ControlTemplate.Triggers>
                        <Trigger Property="ItemsControl.AlternationIndex" Value="1">
                            <Setter Property="DockPanel.Dock" TargetName="rowImage" Value="Right" />
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
...