2013-04-05 56 views
0

我正在使用Silverlight 5並嘗試將一些樣式綁定到視圖模型。我遇到了綁定問題,而不是在屬性更改時設置新值。但是,這隻會發生在默認的風格,如果我使用一個鍵然後它能正常工作。這裏有些例子。Textblock不檢索更改屬性上的新樣式

這工作:

<Style x:Key="HeaderTextStyle" TargetType="TextBlock"> 
    <Setter Property="Foreground" Value="{Binding ForegroundBrush, Source={StaticResource Theme}}"/> 
    <Setter Property="FontSize" Value="15"/> 
    <Setter Property="FontWeight" Value="Bold"/> 
    <Setter Property="TextWrapping" Value="Wrap"/> 
    <Setter Property="Margin" Value="0,15,0,4"/> 
    <Setter Property="HorizontalAlignment" Value="Left"/> 
</Style> 

這不起作用:

<Style TargetType="TextBlock"> 
    <Setter Property="Foreground" Value="{Binding ForegroundBrush, Source={StaticResource Theme}}"/> 
    <Setter Property="FontSize" Value="15"/> 
    <Setter Property="FontWeight" Value="Bold"/> 
    <Setter Property="TextWrapping" Value="Wrap"/> 
    <Setter Property="Margin" Value="0,15,0,4"/> 
    <Setter Property="HorizontalAlignment" Value="Left"/> 
</Style> 

在第一個例子,當PropertyChanged事件被稱爲它重新綁定前景色爲正確的值。在第二個例子中,它不會重新綁定。

任何想法?

回答

0

我記得,Style總是用x:Key屬性聲明的,如果你想爲TargetType設置一些默認樣式,可以使用BasedOn屬性。像...

<Style x:Key="HeaderTextStyle" TargetType="TextBlock"> 
    <Setter Property="Foreground" Value="{Binding ForegroundBrush, Source={StaticResource Theme}}"/> 
    ... 
</Style> 

<style TargetType="TextBlock" BasedOn="{StaticResource HeaderTextStyle}" /> 
0

你應該試試這種方法:

<Style x:Key="HeaderTextStyle" TargetType="TextBlock"> 
     <Setter Property="Foreground" Value="{Binding ForegroundBrush, Source={StaticResource Theme}}"/> 
     ... 
    </Style> 

    <style TargetType="TextBlock" BasedOn="{StaticResource HeaderTextStyle}" />