gpt4 book ai didi

.net - .Net4 的 WPF 全局样式问题

转载 作者:行者123 更新时间:2023-12-04 15:37:44 26 4
gpt4 key购买 nike

我刚刚将我的 WPF 应用程序从 .Net3.5 更改为 .Net4。这样做会导致我所有的全局样式停止工作。只有使用键显式设置的样式才有效。我做了一些研究并找出了导致这种情况的原因,并在一个简单的应用程序中重现了它。

我有一个简单的 WPF 应用程序,只包含一个带文本的按钮 - 没有样式或其他任何东西。我在 App.Xaml 的 ResourceDictionary 中为所有按钮定义了一个样式:

<Style TargetType="{x:Type Button}">
<Setter Property="Background" Value="Red"></Setter>
</Style>

我的按钮现在是红色的 - 一切正常。我现在将其移至单独项目中的单独 ResourceDictionary。这是我想要保存所有共享样式的地方。该按钮仍然是红色的,我从 App.xaml 到 SharedStyles.xaml 的引用如下所示:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/StyleLib;component/SharedStyles.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>

现在 - 我希望 StyleLib 的 SharedStyles.xaml 保存所有特定的样式定义,因此我在名为 ButtonStyles.xaml 的同一个项目中创建一个新文件,并在那里添加资源。实际上 - 我也添加了另一种样式,并带有一个显式使用的键(从技术上讲,我稍后添加了它,所以这与发生的问题没有任何关系)。
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

<Style TargetType="{x:Type Button}">
<Setter Property="Background" Value="Red"></Setter>
</Style>

<Style x:Key="Explicit" TargetType="{x:Type Button}">
<Setter Property="Background" Value="Blue"></Setter>
</Style>
</ResourceDictionary>

ButtonStyles.xaml 引用自 SharedStyles.xaml:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/StyleLib;component/ButtonStyles.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>

现在 - 我的按钮控件不再样式化。实际上 - 它仍然在 VS2010 的预览窗口中显示为样式,但是当我运行应用程序时,它们没有样式。如果我使用键“显式”显式引用样式,则它们会获得此样式 - 因此该文件已成功包含。

另一个有趣的事情是,如果我现在在 SharedStyle.xaml 中添加另一种样式 - 例如StackPanel 的全局样式(这是我尝试过的) - 然后 ButtonStyle.xaml 中的全局样式神奇地开始工作..!

我现在的问题是我是否做错了什么,或者这听起来像是 .Net4 中的错误?对我来说听起来像是一个错误..这在 .Net3.5 中确实工作得很好!

最佳答案

我觉得这很奇怪。这在 .Net3.5 中确实工作得很好,我看不出它现在不应该工作的原因!

我将此作为错误报告给 Microsoft。您可以 view the bug report here .当他们确认文件时,也应该可以在那里找到解决孤立问题的源代码。

关于.net - .Net4 的 WPF 全局样式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2737040/

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