0

我正在使用 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 事件时,它将前景色重新绑定到正确的值。在第二个示例中,它不会重新绑定。

有任何想法吗?

4

2 回答 2

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}" />
于 2013-04-06T16:45:43.310 回答
0

你应该这样尝试:

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

    <style TargetType="TextBlock" BasedOn="{StaticResource HeaderTextStyle}" />
于 2013-04-27T08:44:12.990 回答