gpt4 book ai didi

c# - WPF 不应用 MergedDictionaries 中定义的默认样式?

转载 作者:IT王子 更新时间:2023-10-29 04:13:05 25 4
gpt4 key购买 nike

在 WPF 应用程序中,我在单独的资源字典(例如“ButtonStyle.xaml”)中定义了默认控件样式,并将它们作为合并字典添加到名为“ResDictionary.xaml”的资源字典中。

如果我在我的 App.xaml 中引用此“ResDictionary.xaml”作为合并字典,则不会应用默认样式。但是,如果我引用“ButtonStyle.xaml”,它会正常工作。

如果我在 .NET 3.5 或 3.0 中重新编译相同的代码,它会识别并应用“App.xaml”到“ResDictionary.xaml”中引用的默认样式,但在 .NET 4.0 中则不会。

在运行时,如果我检查 Application.Current.Resources 字典,默认样式在那里,但它们没有应用,只有当我在 Button 控件中明确指定 Style 属性时。

在 .NET 4.0 中是否有任何解决方案来引用资源字典(包含默认样式)?


应用程序.xaml:

<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Styles/ResDictionary.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>

ResDictionary.xaml:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Default/ButtonStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>

ButtonStyle.xaml:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style TargetType="Button">
<Setter Property="Background" Value="Yellow"/>
</Style>
</ResourceDictionary>

最佳答案

最好的解决方案是在将所有资源合并在一起的资源字典中添加虚拟默认样式

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Style/Button.xaml"/>
</ResourceDictionary.MergedDictionaries>

<Style TargetType="Control" BasedOn="{StaticResource {x:Type Control}}" />

关于c# - WPF 不应用 MergedDictionaries 中定义的默认样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2753651/

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