Я хочу установить текст по умолчанию в качестве фона управления (например, TreeView, ListView, GridView и т. Д.).Текст отображается, когда элемент не контролируется, и скрывается, когда элемент управления не пуст.
Я представляю это так:
Для этого я использую следующий стиль.
<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>
Также вы можете использовать VisualBrush, если вам нужен более сложный фон. Вы можете создать VisualBrush из любого элемента управления в WPF. Если вам нужна кисть с метками в сетке, это можно сделать.
Вероятно, в классе есть свойство .Background.Вы можете сделать из него элемент, например:
.Background
<Button.Background> <!-- content --> </Button.Background>
Это позволит вам разместить контент внутри него.