当属性改变时,文本块无法检索新样式



我正在使用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>

This does not work:

<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事件时,它将前景色重新绑定到正确的值。在第二个例子中,它没有重新绑定。

任何想法?

我记得,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}" />

你应该这样尝试:

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

相关内容

  • 没有找到相关文章

最新更新