wpf 非常漂亮ItemsControl DataTrigger作用的先后顺序

之前有写过两篇元素之间的颜色 

wpf 非常漂亮ItemsControl 里面的元素间隔不同的颜色

DataTrigger 里面的元素不同值不同的颜色 

现在有一个需求,

1)每个元素之间要有间隔颜色

2)当这个元素里面空时,则不显示颜色

以下就是完整的例子

<ItemsControl AlternationCount="2" x:Name="listMsg" Margin="0 150 0 0"  Padding="0">
                            <ItemsControl.ItemsPanel>
                                <ItemsPanelTemplate>
                                    <WrapPanel Orientation="Horizontal"/>
                                </ItemsPanelTemplate>
                            </ItemsControl.ItemsPanel>
                            <ItemsControl.ItemTemplate>
                                <DataTemplate>
                                    <TextBlock Text="{Binding}" Width="49" FontSize="10" Margin="0 0 1 0"  Height="50" Padding="0 20 0 0" TextAlignment="Center">
                                        <TextBlock.Style>
                                            <Style TargetType="TextBlock">
                                                <Style.Triggers>
                                                    <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContentPresenter}, Path=(ItemsControl.AlternationIndex)}"  Value="0">
                                                        <Setter Property="Background" Value="#bae7ff"/>
                                                        <Setter Property="Foreground" Value="#022A3C" />
                                                    </DataTrigger>
                                                    <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContentPresenter}, Path=(ItemsControl.AlternationIndex)}"  Value="1">
                                                        <Setter Property="Background" Value="#ff7a45"/>
                                                        <Setter Property="Foreground" Value="#FFFFFF" />
                                                    </DataTrigger>
                                                    <DataTrigger Binding="{Binding}" Value="">
                                                        <Setter Property="Background" Value="Transparent"/>
                                                        <!-- 文本为空时背景色为透明 -->
                                                    </DataTrigger>
                                                    <DataTrigger Binding="{Binding}" Value="{x:Null}">
                                                        <Setter Property="Background" Value="Transparent"/>
                                                        <!-- 文本为null时背景色为透明 -->
                                                    </DataTrigger>
                                                    <DataTrigger Binding="{Binding}" Value="{x:Static sys:String.Empty}">
                                                        <Setter Property="Background" Value="Transparent"/>
                                                        <!-- 文本为String.Empty时背景色为透明 -->
                                                    </DataTrigger>
                                                </Style.Triggers>
                                            </Style>
                                        </TextBlock.Style>
                                    </TextBlock>
                                </DataTemplate>
                            </ItemsControl.ItemTemplate>
                        </ItemsControl>

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是一个使用WPF Prism框架ItemsControl控件和绑定数据源的示例代码: 1. 在XAML添加ItemsControl控件 ```xml <ItemsControl x:Name="MyItemsControl" ItemsSource="{Binding MyItems}"> <ItemsControl.ItemTemplate> <DataTemplate> <!-- 在这里定义控件模板 --> </DataTemplate> </ItemsControl.ItemTemplate> </ItemsControl> ``` 2. 在ViewModel定义数据源和属性 ```csharp private ObservableCollection<MyItemViewModel> _myItems; public ObservableCollection<MyItemViewModel> MyItems { get { return _myItems; } set { SetProperty(ref _myItems, value); } } ``` 3. 在ViewModel的构造函数初始化数据源 ```csharp MyItems = new ObservableCollection<MyItemViewModel>(); MyItems.Add(new MyItemViewModel() { Title = "Item 1", Description = "Description for Item 1" }); MyItems.Add(new MyItemViewModel() { Title = "Item 2", Description = "Description for Item 2" }); MyItems.Add(new MyItemViewModel() { Title = "Item 3", Description = "Description for Item 3" }); ``` 4. 在MyItemViewModel定义需要绑定的属性 ```csharp public class MyItemViewModel : BindableBase { private string _title; public string Title { get { return _title; } set { SetProperty(ref _title, value); } } private string _description; public string Description { get { return _description; } set { SetProperty(ref _description, value); } } } ``` 5. 在DataTemplate定义控件模板,绑定对应的属性 ```xml <DataTemplate> <StackPanel> <TextBlock Text="{Binding Title}" /> <TextBlock Text="{Binding Description}" /> </StackPanel> </DataTemplate> ``` 这样,就可以在界面展示绑定的数据源了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weijia3624

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值