Sha*_*aku 5 c# wpf compatibility xaml resourcedictionary
给定一个按钮(或组合框,或任何控件):
<Button x:Name="button" Command="{Binding DoStuff}" Margin="10,0,5,5" Content="Do Stuff!" Style="{StaticResource buttonDefaults}"/>
Run Code Online (Sandbox Code Playgroud)
随风格:
<Style x:Key="buttonDefaults" TargetType="Button" BasedOn="{StaticResource {x:Type Button}}">
<Style.Resources>
<ResourceDictionary Source="/PresentationFramework.Aero;component/themes/Aero.NormalColor.xaml"/>
</Style.Resources>
<Setter Property="Background">
<Setter.Value>
<RadialGradientBrush>
<GradientStop Color="#F4083268" Offset="1"/>
<GradientStop Color="#FE5C9247"/>
</RadialGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="BorderBrush" Value="Transparent"/>
<Setter Property="Foreground" Value="White"/>
<Setter Property="FontFamily" Value="Arial"/>
<Setter Property="FontSize" Value="16"/>
<Setter Property="Focusable" Value="False"/>
</Style>
Run Code Online (Sandbox Code Playgroud)
它在Windows 8中看起来与在Windows 7中看起来非常不同.
现在,奇怪的是,在DESIGNER中,一切在Windows 8机器上看起来都很完美,就好像它是Windows 7 ......但在运行时,风格并没有"应用".
另一方面,它在设计器和运行时的Windows 7上看起来都很完美.有没有办法来解决这个问题?
额外细节:
随着风格的RD:
<Style x:Key="buttonDefaults" TargetType="Button" BasedOn="{StaticResource {x:Type Button}}">
<Style.Resources>
<ResourceDictionary Source="/PresentationFramework.Aero,Version=4.0.0.0,Culture=Neutral,PublicKeyToken=31bf3856ad364e35,processorArchitecture=MSIL;component/themes/Aero.NormalColor.xaml"/>
</Style.Resources>
<Setter Property="Background">
<Setter.Value>
<RadialGradientBrush>
<GradientStop Color="#F4083268" Offset="1"/>
<GradientStop Color="#FE5C9247"/>
</RadialGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="BorderBrush" Value="Transparent"/>
<Setter Property="Foreground" Value="White"/>
<Setter Property="FontFamily" Value="Arial"/>
<Setter Property="FontSize" Value="16"/>
<Setter Property="Focusable" Value="False"/>
</Style>
Run Code Online (Sandbox Code Playgroud)
结果如下:http://i61.tinypic.com/willvk.png
使用应用程序范围中的RD:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/PresentationFramework.Aero,Version=4.0.0.0,Culture=Neutral,PublicKeyToken=31bf3856ad364e35,processorArchitecture=MSIL;component/themes/Aero.NormalColor.xaml"/>
</ResourceDictionary.MergedDictionaries>
<Style x:Key="buttonDefaults" TargetType="Button" BasedOn="{StaticResource {x:Type Button}}">
<Setter Property="Background">
<Setter.Value>
<RadialGradientBrush>
<GradientStop Color="#F4083268" Offset="1"/>
<GradientStop Color="#FE5C9247"/>
</RadialGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="BorderBrush" Value="Transparent"/>
<Setter Property="Foreground" Value="White"/>
<Setter Property="FontFamily" Value="Arial"/>
<Setter Property="FontSize" Value="16"/>
<Setter Property="Focusable" Value="False"/>
</Style>
</ResourceDictionary>
</Application.Resources>
Run Code Online (Sandbox Code Playgroud)
结果如下:http://i61.tinypic.com/24nob9y.png
我想将第二个的视觉效果应用于单一样式,而不是整个应用程序.
我认为您的问题源于您使用部分程序集名称的事实.根据MSDN,当您使用部分程序集名称时,不会搜索GAC程序集.
在进行其他详细更新后进行修改
看完截图后,我终于明白了你的新问题.问题与资源范围有关.在控件中定义样式时,在添加aero覆盖之前,按钮会继承按钮样式.您可以通过在所需控件的顶部添加Panel来轻松调整它,并将其用作资源的范围容器.更新的代码如下:
<Window x:Class="AeroTestSample.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="191" Width="246">
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
<Button Content="Do Stuff!" Padding="10" Margin="10"/>
<StackPanel>
<StackPanel.Resources>
<ResourceDictionary Source="/PresentationFramework.Aero,Version=4.0.0.0,Culture=Neutral,PublicKeyToken=31bf3856ad364e35,processorArchitecture=MSIL;component/themes/Aero.NormalColor.xaml"/>
</StackPanel.Resources>
<Button Content="Do Stuff!" Padding="10" Margin="10">
<Button.Resources>
<Style TargetType="Button" BasedOn="{StaticResource {x:Type Button}}">
<Setter Property="Background">
<Setter.Value>
<RadialGradientBrush>
<GradientStop Color="#F4083268" Offset="1"/>
<GradientStop Color="#FE5C9247"/>
</RadialGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="BorderBrush" Value="Transparent"/>
<Setter Property="Foreground" Value="White"/>
<Setter Property="FontFamily" Value="Arial"/>
<Setter Property="FontSize" Value="48"/>
<Setter Property="Focusable" Value="False"/>
</Style>
</Button.Resources>
</Button>
</StackPanel>
</StackPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)
这个截图有效:
归档时间: |
|
查看次数: |
1476 次 |
最近记录: |