2013-05-22 59 views
1

我有這樣的代碼造型內部元素在XAML樣式

<HyperlinkButton Style="{StaticResource HyperLink-Navi-Container}"> 
     <HyperlinkButton.Content> 
      <TextBlock Text="Sample Text"></TextBlock> 
     </HyperlinkButton.Content> 
</HyperlinkButton> 

而這種風格

<Style x:Key="HyperLink-Navi-Container" TargetType="HyperlinkButton"> 
    <Setter Property="Height" Value="50"></Setter> 
    <Setter Property="Background"> 
     <Setter.Value> 
      <LinearGradientBrush StartPoint="1, 0.5" EndPoint="1, 2"> 
       <GradientStop Color="White" Offset="0.75"></GradientStop> 
       <GradientStop Color="Gray"></GradientStop> 
      </LinearGradientBrush> 
     </Setter.Value> 
    </Setter> 
    <Setter Property="Margin" Value="2,2,2,0"></Setter> 
    <Setter Property="Foreground" Value="Orange"></Setter> 

</Style> 

現在我的問題是如何風格的的TextBlock的屬性或裏面的任何其他元素HyperlinkBut​​ton就像在CSS

HyperlinkButton.* 
{ 
    Background : red; 
} 

TIA

回答

0

您需要使用綁定

一下添加到TextBlock的解決background屬性:

{Binding Path=Background, RelativeSource={RelativeSource AncestorType={x:Type HyperlinkButton}}} 
0

TextBlock沒有一個Background屬性來設置。你需要把它包在另一個控制,Border例如:

<HyperlinkButton.Content> 
    <Border Background="Red"> 
     <TextBlock Text="Sample Text"></TextBlock> 
    </Border> 
</HyperlinkButton.Content> 

當然你也可以使用樣式設置邊框背景:

<Style x:Key="HyperlinkBorder" TargetType="Border"> 
    <Setter Property="Background" Value="Red" /> 
</Style> 

<HyperlinkButton.Content> 
    <Border Style="{StaticResource HyperlinkBorder}"> 
     <TextBlock Text="Sample Text"></TextBlock> 
    </Border> 
</HyperlinkButton.Content> 

編輯:

你可以不會影響XAML中外部元素的樣式中的嵌套元素。您可以設置樣式中ContentTemplate但:

<DataTemplate x:Key="HyperlinkTemplate"> 
    <Border Background="Red"> 
     <TextBlock Text="Sample Text"></TextBlock> 
    </Border> 
</DataTemplate> 

<Style x:Key="HyperLink-Navi-Container" TargetType="HyperlinkButton"> 
    <Setter Property="Height" Value="50"></Setter> 
    <Setter Property="Background"> 
     <Setter.Value> 
      <LinearGradientBrush StartPoint="1, 0.5" EndPoint="1, 2"> 
       <GradientStop Color="White" Offset="0.75"></GradientStop> 
       <GradientStop Color="Gray"></GradientStop> 
      </LinearGradientBrush> 
     </Setter.Value> 
    </Setter> 
    <Setter Property="Margin" Value="2,2,2,0"></Setter> 
    <Setter Property="Foreground" Value="Orange"></Setter> 
    <Setter Property="ContentTemplate" Value="{StaticResource HyperlinkTemplate}" /> 
</Style> 
+0

嗨,我使用背景作爲樣本只..我的問題是如何訪問元素的元素在裏面風格 –

+0

@VincentDagpin我不知道很多關於CSS,所以我猜你有點想要實現。也許在樣式中設置'ContentTemplate'就是你要找的東西。看到我編輯的答案。 –