我想在控件背景中设置一些默认文本(例如TreeView,ListView,GridView等)。当项目控件不为空时,项目中没有项目控制和隐藏时显示文本。
我想像这样:
答案 0 :(得分:5)
我使用以下样式。
<Style x:Key="{x:Type ItemsControl}" TargetType="{x:Type ItemsControl}">
<Setter Property="Background" Value="Transparent"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Items.Count, RelativeSource={RelativeSource Self}}" Value="0">
<Setter Property="Background">
<Setter.Value>
<VisualBrush Stretch="None">
<VisualBrush.Visual>
<TextBlock Text="No Data"
FontFamily="Consolas"
FontSize="16"/>
</VisualBrush.Visual>
</VisualBrush>
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding="{Binding Items, RelativeSource={RelativeSource Self}}" Value="{x:Null}">
<Setter Property="Background">
<Setter.Value>
<VisualBrush Stretch="None">
<VisualBrush.Visual>
<TextBlock Text="No Data"
FontFamily="Consolas"
FontSize="16"/>
</VisualBrush.Visual>
</VisualBrush>
</Setter.Value>
</Setter>
</DataTrigger>
<Trigger Property="IsGrouping" Value="true">
<Setter Property="ScrollViewer.CanContentScroll" Value="false"/>
</Trigger>
</Style.Triggers>
</Style>
<Style x:Key="{x:Type DataGrid}" TargetType="{x:Type DataGrid}" BasedOn="{StaticResource {x:Type ItemsControl}}">
</Style>
<Style x:Key="{x:Type TreeView}" TargetType="{x:Type TreeView}" BasedOn="{StaticResource {x:Type ItemsControl}}">
</Style>
答案 1 :(得分:0)
班上可能有.Background
属性。你可以用它来制作一个元素:
<Button.Background>
<!-- content -->
</Button.Background>
这样您就可以在其中放置内容。
答案 2 :(得分:0)
如果您需要更复杂的背景,也可以使用VisualBrush。您可以在WPF中的任何控件中创建VisualBrush。如果你想在网格中使用带标签的笔刷,那就可以了。