как установить текст в фоновом режиме управления - PullRequest
1 голос
/ 20 мая 2011

Я хочу установить текст по умолчанию в качестве фона управления (например, TreeView, ListView, GridView и т. Д.).Текст отображается, когда элемент не контролируется, и скрывается, когда элемент управления не пуст.

Я представляю это так: enter image description here

Ответы [ 3 ]

5 голосов
/ 20 мая 2011

Для этого я использую следующий стиль.

<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>
0 голосов
/ 20 мая 2011

Также вы можете использовать VisualBrush, если вам нужен более сложный фон. Вы можете создать VisualBrush из любого элемента управления в WPF. Если вам нужна кисть с метками в сетке, это можно сделать.

0 голосов
/ 20 мая 2011

Вероятно, в классе есть свойство .Background.Вы можете сделать из него элемент, например:

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

Это позволит вам разместить контент внутри него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...