在WPF中,可以通过DataTrigger和Binding来实现根据TextBlock内容是否有值来改变背景颜色。以下是一个示例:
<ItemsControl ItemsSource="{Binding Lists}" Margin="0" Padding="0">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" Width="29" Height="20" Padding="0 3 0 0"
Foreground="#FFFFFF" FontSize="10" Margin="0 0 1 0" TextAlignment="Center">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Background" Value="#680391"/>
<!-- 默认背景紫色 黄色#FACF0B-->
<Style.Triggers>
<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>
在这个例子中,我们设置了三个DataTrigger来检查TextBlock的Text属性是否为空、null或String.Empty。如果满足这些条件,背景色将被设置为透明。最后一个DataTrigger用于当TextBlock有值时设置你想要的背景颜色。
请注意,这个示例使用了System
命名空间的别名sys
,请在XAML文件的开头添加以下行:
xmlns:sys="clr-namespace:System;assembly=mscorlib"