2016-09-23 8 views
1

これが可能かどうかはわかりませんが、誰かが知っているかどうかはわかります。私は内部にTextBlockを持つBorderであるデータテンプレートのスタイルを書きたいと思っています。理想的には、私はすべてのものを一つのスタイルにしたいと思っています。今、私はBorderとTextBlockのスタイルを別々に持っています。ここでXAMLデータテンプレートスタイルの枠組み(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> 

コード・コンプリートは私が働くと思っていたBorderのプロパティを追加しましたが、動作していないようです。

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

私はすべてを1つのスタイルに入れることはできないと思います。このスタイルの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の周りに素敵な円形の境界線を生成します。

関連する問題