通过资源字典控制模板和与主题相关的数据分离

时间:2012-02-04 14:35:37

标签: silverlight xaml themes resourcedictionary

我有几个带有主题相关数据的资源词典,我用这种方式声明了特定元素的样式:

<Style TargetType="sdk:DataForm">
    <Setter Property="Background" Value="{StaticResource Bckgrnd}"/>
</Style>

我还有Generic.xaml,我想为这个目标类型设置模板,但我面临的情况是,在一个模板中我必须使用多种颜色,但目标类型只有一种颜色属性。像这样:

<Style TargetType="sdk:DataForm">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="sdk:DataForm">
                <Grid ctl:DataField.IsFieldGroup="True">
                    ....
                 <StackPanel Background="{TemplateBinding Background}" ...>
                    ...
                    ...
                 <!-- and I need another background from themes here -->
                 <StackPanel Background="{???}" ...>
                    ...
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

问题是:在没有类似目标类型扩展的情况下,如何在这种情况下使用不同的颜色?如果您能找到纯xaml解决方案,那就太好了。

由于

1 个答案:

答案 0 :(得分:0)

我不知道纯XAML解决方案。我想我会创建一个DataForm的子类,并为它添加Brush类型的依赖属性。然后在XAML而不是DataForm中使用该类,并使用引用新属性的TemplateBindings。

或者,如果您不想继承DataForm,也许您可​​以创建Brush类型的附加属性。

相关问题