gpt4 book ai didi

c# - Silverlight - 从部分中删除隐式样式

转载 作者:行者123 更新时间:2023-11-30 15:06:55 26 4
gpt4 key购买 nike

我正在使用 Silverlight toolkit为我的整个应用程序设置样式。现在我需要从特定部分中删除隐式样式,以便它不会干扰该部分中的其他样式。

基本上我想做这样的事情:

<theme:BureauBlackTheme>
<StackPanel x:Name="LayoutRoot">
<StackPanel><!-- Use the standard Bureau Black theme here --></StackPanel>
<StackPanel><!-- I don't want any implicit styling on this section --></StackPanel>
</StackPanel>
</theme:BureauBlackTheme>

查看Silverlight工具包的源码,发现主题是通过合并资源字典来应用的:

...
// Load the theme
ResourceDictionary resources = null;
using (stream)
{
resources = ResourceParser.Parse(stream, true);
owner.MergedDictionaries.Add(resources);
}
...

主题文件包含一堆隐式样式:

<!--ScrollBar-->
<Style TargetType="ScrollBar">
<Setter Property="MinWidth" Value="17" />
...

因此,我需要一种方法来删除特定部分的所有隐式样式,但仅限于该部分。我需要这个的原因是因为这些样式干扰了第三方控件的样式(我认为这与 precedence of the control styles 有关)。

这在 Silverlight 4 中可行吗?也欢迎解决方法。

提前致谢!

最佳答案

您能做的最好的事情就是将 SL 工具包添加的隐式样式短路。例如,如果您像这样添加一个空样式:

<theme:BureauBlackTheme>
<StackPanel x:Name="LayoutRoot">
<StackPanel><!-- Use the standard Bureau Black theme here --></StackPanel>
<StackPanel>
<!-- I don't want any implicit styling on this section -->
<StackPanel.Resources>
<Style TargetType="ScrollBar" />
</StackPanel.Resources>
</StackPanel>
</StackPanel>
</theme:BureauBlackTheme>

然后空样式将阻止应用主题的样式,因为一次只能应用 1 个隐式样式。不过,您必须为 SL Toolkit 支持的每种元素类型执行此操作。

关于c# - Silverlight - 从部分中删除隐式样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7125761/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com