簡體   English   中英

具有TextBlock的XAML數據模板樣式邊框

[英]XAML Data Template Style Border with TextBlock

我不確定這是否可行,但我想看看是否有人知道。 我想為數據模板編寫樣式,該樣式是內部帶有TextBlock的Border。 理想情況下,我想以一種樣式來處理整個事情。 現在,我分別具有Border和TextBlock的樣式。

這是我的DataTemplate:

<DataTemplate DataType="{x:Type local:MyObject}">
    <Border Style="{StaticResource BorderStyle}">
        <TextBlock Style="{StaticResource TextBlockStyle}"/>
    </Border>
</DataTemplate>

邊框樣式

<Style x:Key="BorderStyle" TargetType="Border">
    <Setter Property="BorderBrush" Value="Black"/>
    <Setter Property="BorderThickness" Value="1"/>
    <Setter Property="CornerRadius" Value="90"/>
    <Setter Property="Width" Value="45"/>
    <Setter Property="Height" Value="45"/>
    <Setter Property="Background" Value="White"/>
    <Setter Property="Opacity" Value=".75"/>
</Style>

TextBlock的樣式

<Style x:Key="TextBlockStyle" TargetType="TextBlock">
    <Setter Property="Text" Value="{Binding Name}"/>
    <Setter Property="VerticalAlignment" Value="Center"/>
    <Setter Property="HorizontalAlignment" Value="Center"/>
</Style>

Code Complete為我提供了我認為可以使用的Border的其他屬性,但是它們似乎不起作用。

<Style x:Key="BorderStyle" TargetType="Border">
    ...
    <Setter Property="TextBlock.VerticalAlignment" Value="Center"/>
    ...
</Style>

您可以創建一個DataTemplate並將其用作應用程序中的靜態資源。 我是通過以下提到的方式實現的。

<Window.Resources>
    <DataTemplate x:Key="borderedTemplate">
        <Border BorderBrush="Black" BorderThickness="1" CornerRadius="90" Width="45" Height="45" Background="White" Opacity=".75">
            <TextBlock VerticalAlignment="Center" HorizontalAlignment="Center" Text="{Binding Name}">
            </TextBlock>
        </Border>
    </DataTemplate>
</Window.Resources>

定義此模板后,我們可以使用borderedTemplate鍵使用此模板。 這個特定的模板會在TextBlock周圍生成漂亮的圓形邊框。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM