sti*_*k81 6 .net wpf styles .net-4.0
我刚刚将.Net3.5的WPF应用程序更改为.Net4.这样做会导致我的所有全局样式停止工作.只有使用键明确设置的样式才有效.我做了一些研究,找出了导致这种情况的原因,并在一个简单的应用程序中重现了它.
我有一个简单的WPF应用程序,只包含一个带文本的按钮 - 没有样式或其他任何东西.我为App.Xaml的ResourceDictionary中的所有按钮定义了一个样式:
<Style TargetType="{x:Type Button}">
<Setter Property="Background" Value="Red"></Setter>
</Style>
Run Code Online (Sandbox Code Playgroud)
我的按钮现在是红色 - 一切都很好.我现在将其移动到单独项目中的单独ResourceDictionary中.这是我想要保留所有共享样式的地方.该按钮仍为红色,我从App.xaml到SharedStyles.xaml的引用如下所示:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/StyleLib;component/SharedStyles.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
Run Code Online (Sandbox Code Playgroud)
现在 - 我希望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>
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
现在 - 我的按钮控件不再设置样式了.实际上 - 它仍然在VS2010的预览窗口中显示为样式,但是当我运行应用程序时,它们没有被设置样式.如果我使用键"Explicit"显式引用样式,它们将获得此样式 - 因此成功包含该文件.
另一个有趣的事情是,如果我现在在SharedStyle.xaml中添加另一个样式 - 例如StackPanel的全局样式(这是我尝试过的) - 那么ButtonStyle.xaml中的全局样式神奇地开始工作..!
我现在的问题是,如果我做错了什么,或者这听起来像.Net4中的错误?对我来说听起来像个错误..这在.Net3.5中运行得很好!
| 归档时间: |
|
| 查看次数: |
1644 次 |
| 最近记录: |