wpf - 设置 ItemsControl 中第 N 个项目的样式

标签 wpf xaml styles datatemplate

我有一个 ItemsControl 及其关联的 DataTemplate ,如下所示。我的问题是如何对 ItemsControl 中的第 N 个项目设置不同的样式?我试图仅在某些项目上放置边框。

    <DataTemplate x:Key="CTemplate">
        <Grid HorizontalAlignment="Left" Width="200" Height="Auto" Margin="0,0,30,30">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="10"/>
                <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>
            <StackPanel Orientation="Vertical" Grid.Column="0">
                <TextBlock Text="Device Name:" Style="{StaticResource i2_TB}"/>
                <TextBlock Text="Device ID:" Style="{StaticResource i2_TB}" />
            </StackPanel>
            <StackPanel Orientation="Vertical" Grid.Column="2">
                <TextBlock Text="{Binding DeviceName}" Style="{StaticResource i2_TB}" TextTrimming="CharacterEllipsis" />
                <TextBlock Text="{Binding DeviceID}" Style="{StaticResource i2_TB}" TextTrimming="CharacterEllipsis" />
            </StackPanel>
        </Grid>
    </DataTemplate>

最佳答案

我明白了,而且非常简单

  1. 首先设置与您的 N 匹配的 AlternationCount。就我而言,每行有 3 个项目,我希望第三个项目有所不同。

    <ItemsControl ItemTemplate="{StaticResource CTemplate}" AlternationCount="3">
    
  2. 其次,使用 AlternationIndex 作为数据触发器,在模板本身中设置数据触发器

    <DataTemplate.Triggers>
        <Trigger Property="ItemsControl.AlternationIndex" Value="2">
            <Setter Property="BorderThickness" Value="0,0,0,1" TargetName="controlHost"/>
        </Trigger>
    </DataTemplate.Triggers>
    
  3. 获胜

关于wpf - 设置 ItemsControl 中第 N 个项目的样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19450102/

相关文章:

c# - 如何在 WP8 应用程序中使用媒体查看器

css - 重新创建亚马逊过滤器的样式?

javascript - HTML - 更改选择中文本的样式

wpf - 在注册区域的新窗口中打开 Prism 模块

c# - WPF 级联组合框到文本框

c# - wpf 形式的所有内容的圆角

c# - 在 UWP 中使用 DataTriggerBehavior 更改 ContentTemplate

c# - Wpf 如何将 xaml.cs 窗口逻辑分离到单独的类中

wpf - WPF 应用程序中字典的表达式混合和示例数据

jquery - Firefox 上的 div 问题中的图像