WPF - ListView 中的替代项模板

发布于 2024-12-08 19:04:52 字数 155 浏览 0 评论 0原文

在自定义列表视图中,每一行都由图像和文本组成。每个偶数行,图像应位于左侧,每个奇数行,图像应位于右侧。

作为 WPF 的初学者,我想知道实现这一目标并重用大部分编写的 XAML 的最简单方法是什么。

奇数/偶数项目模板实际上的区别仅在于图像位于文本的一侧或另一侧。

In a custom list view, each row is composed of an image and of a text. Every even row, the image should be on the left and every odd row, it should be on the right.

Being a beginner at WPF, I wonder what is the easiest way to achieve that and to reused most of the XAML written.

The odd/even item templates really only differ by the fact that the image is on one side or the other of the text.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

无人接听 2024-12-15 19:04:53

我相信您可以使用样式中的触发器来实现此目的。您可以将图像左对齐,然后在触发器中将其更改为右对齐。

类似于:有关

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

I believe that you can use a trigger in the style to achieve this. You can place your image left aligned and in the trigger change that to right.

Something similar to:

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

More information about how to use AlternationIndex here.

Edit - Working Sample

    <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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文