2016-09-23 53 views
1

我不確定這是否可能,但我想查看是否有人知道。我想寫一個數據模板的樣式,它是一個帶有TextBlock的邊框。理想情況下,我希望以一種風格來呈現整個事物。現在我分別具有Border和TextBlock的樣式。帶TextBlock的XAML數據模板樣式邊框

這裏是我的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> 

代碼完成給了我額外的邊界,我認爲會工作的屬性,但他們似乎並沒有工作。

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

我不認爲有可能把所有東西都放在一個風格上。這種風格的TargetType是什麼? – Mat

+0

將所有內容放在'DataTemplate.Resources'中。 – AnjumSKhan

回答

2

您可以創建一個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生成一個漂亮的圓形邊框。