为什么我的 CornerRadius WPF 样式没有在 Windows 7 中应用?
Why is my WPF style for CornerRadius not being applied in Windows 7?
我在 answering an SO question 时创建了一个简单的 WPF 应用程序,我的解决方案适用于我的 Windows 10 机器,但是当我 运行 我的 Windows 7 笔记本电脑上的应用程序时未应用样式。我认为这与 Window 的风格设置有关,我如何强制它使用我的风格?
我运行在两台机器上安装相同的 .exe。
<Window.Resources>
<Style x:Key="CircleButton" TargetType="Button">
<Style.Resources>
<Style TargetType="{x:Type Border}">
<Setter Property="CornerRadius" Value="1000"/>
</Style>
</Style.Resources>
</Style>
</Window.Resources>
<StackPanel>
<Button Width="50" Height="50" Margin="10" Style="{StaticResource CircleButton}"/>
<Button Width="50" Height="50" Margin="10" Style="{StaticResource CircleButton}"/>
<Button Width="50" Height="50" Margin="10" Style="{StaticResource CircleButton}"/>
</StackPanel>
Windows 10 运行ning .NET 4.8(应用程序目标 4.6.2)
Windows 7 运行ning .NET 4.7.2(应用程序目标 4.6.2)
PresentationFramework.Aero.dll
中定义的 Windows 7 上的默认样式使用 ButtonChrome
元素而不是 Border
元素,这就是添加隐式 Border
风格没有影响。
如果您想在 Windows 7 上应用 Windows 10 样式,您可以复制 PresentationFramework.Aero2.dll
中定义的整个 ControlTemplate
在 Windows 8 及更高版本并在 Style
:
中设置 Template
属性
<Style x:Key="CircleButton" TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
...
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Resources>
<Style TargetType="{x:Type Border}">
<Setter Property="CornerRadius" Value="1000"/>
</Style>
</Style.Resources>
</Style>
您可以通过在 Windows 10 Visual Studio 的设计模式中右键单击 Button
元素并选择编辑模板->编辑副本来提取默认模板。
我在 answering an SO question 时创建了一个简单的 WPF 应用程序,我的解决方案适用于我的 Windows 10 机器,但是当我 运行 我的 Windows 7 笔记本电脑上的应用程序时未应用样式。我认为这与 Window 的风格设置有关,我如何强制它使用我的风格?
我运行在两台机器上安装相同的 .exe。
<Window.Resources>
<Style x:Key="CircleButton" TargetType="Button">
<Style.Resources>
<Style TargetType="{x:Type Border}">
<Setter Property="CornerRadius" Value="1000"/>
</Style>
</Style.Resources>
</Style>
</Window.Resources>
<StackPanel>
<Button Width="50" Height="50" Margin="10" Style="{StaticResource CircleButton}"/>
<Button Width="50" Height="50" Margin="10" Style="{StaticResource CircleButton}"/>
<Button Width="50" Height="50" Margin="10" Style="{StaticResource CircleButton}"/>
</StackPanel>
Windows 10 运行ning .NET 4.8(应用程序目标 4.6.2)
Windows 7 运行ning .NET 4.7.2(应用程序目标 4.6.2)
PresentationFramework.Aero.dll
中定义的 Windows 7 上的默认样式使用 ButtonChrome
元素而不是 Border
元素,这就是添加隐式 Border
风格没有影响。
如果您想在 Windows 7 上应用 Windows 10 样式,您可以复制 PresentationFramework.Aero2.dll
中定义的整个 ControlTemplate
在 Windows 8 及更高版本并在 Style
:
Template
属性
<Style x:Key="CircleButton" TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
...
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Resources>
<Style TargetType="{x:Type Border}">
<Setter Property="CornerRadius" Value="1000"/>
</Style>
</Style.Resources>
</Style>
您可以通过在 Windows 10 Visual Studio 的设计模式中右键单击 Button
元素并选择编辑模板->编辑副本来提取默认模板。