我正在使用Silverlight 5并尝试对视图模型进行一些样式绑定。我遇到了绑定问题而没有在属性更改时设置新值。但这只发生在默认样式中,如果我使用键,那么它可以正常工作。以下是一些例子。
这有效:
<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 :(得分: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}" />
答案 1 :(得分:0)
您应该尝试这种方式:
<Style x:Key="HeaderTextStyle" TargetType="TextBlock">
<Setter Property="Foreground" Value="{Binding ForegroundBrush, Source={StaticResource Theme}}"/>
...
</Style>
<style TargetType="TextBlock" BasedOn="{StaticResource HeaderTextStyle}" />