Wpf 如何在控件的后台设置文本

Wpf 如何在控件的后台设置文本,wpf,xaml,Wpf,Xaml,我想在控件的后台设置一些默认文本(例如TreeView、ListView、GridView等)。当items控件中没有项时显示文本,当items控件不为空时隐藏文本 我想是这样的: 类上可能有.Background属性。您可以从中生成一个元素,如下所示: <Button.Background> <!-- content --> </Button.Background> 这将允许您在其中放置内容。类上可能有.Background属性。您可以从中生成一个

我想在控件的后台设置一些默认文本(例如TreeView、ListView、GridView等)。当items控件中没有项时显示文本,当items控件不为空时隐藏文本

我想是这样的:

类上可能有
.Background
属性。您可以从中生成一个元素,如下所示:

<Button.Background>
  <!-- content -->
</Button.Background>


这将允许您在其中放置内容。

类上可能有
.Background
属性。您可以从中生成一个元素,如下所示:

<Button.Background>
  <!-- content -->
</Button.Background>


这将允许您在其中放置内容。

我使用以下样式

<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>

我使用以下样式进行此操作

<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>

如果您需要更复杂的背景,也可以使用可视笔刷。您可以在WPF中不受任何控制地创建VisualBrush。如果您想要在网格中使用带有标签的画笔,也可以这样做。

如果您需要更复杂的背景,也可以使用可视化画笔。您可以在WPF中不受任何控制地创建VisualBrush。如果您想要在网格中使用带有标签的画笔,可以这样做