繁体   English   中英

应用程序级别的样式可以引用UserControl资源吗?

[英]Can an application level style reference a UserControl resource?

在我的WPF应用程序中,我创建了一个SolidColorBrush类型的资源和一个使用该资源作为背景的按钮样式。 在我的UserControl中,我使用相同的名称但使用不同的颜色来覆盖颜色资源。 我可以通过某种方式创建它,即该UserControl中的按钮将使用应用程序样式,但具有UserControl中定义的颜色吗?

当您尝试混淆资源定义的自上而下特性时,您在此处尝试做的工作与WPF中的资源概念有些冲突。 因此,即使您可以正常工作,也会导致异常的行为,使下一个从事代码工作的人(或您将来的人)很难理解正在发生的事情。

我建议您执行以下操作以准确获得所需的行为,同时保持一切井井有条:

假设您的应用程序级别资源是这样的:

<SolidColorBrush x:Key="MyColor" Color="Blue" />

<Style x:Key="TextBlockStyle" TargetType="TextBlock">
    <Setter Property="Foreground" Value="{StaticResource MyColor}" />
    ... (other setters)
</Style>

如果要使用本地画笔覆盖Foreground ,请在使用TextBlock(也可以是UserControl)时明确地执行此操作,并使用BasedOn从应用程序级别样式继承其他所有内容:

<SolidColorBrush x:Key="MyOverridingColor" Color="Red" />

<Style x:Key="OverridingTextBlockStyle" TargetType="TextBlock" BasedOn="{StaticResource TextBlockStyle}">
    <Setter Property="Foreground" Value="{StaticResource MyOverridingColor}" />
</Style>

我建议对第二种颜色使用不同的名称(在上面的示例中为MyOverridingColor ),以明确它是另一种颜色。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM