如何更改 WPF 中按钮的视觉行为?
How to change visual behavior of a button in WPF?
我注意到在 Windows 10 上,OS 显示的控件外观比 Winforms/WPF 上的默认设置更具吸引力。例如,选定的 OS 按钮具有较粗的蓝色边框,并且具有更好的交互性 "feel",而默认的 WPF 按钮显示为简单的灰色框:
OS:
WPF:
有没有办法以某种方式更改 WPF 中按钮的 "theme" 以使其行为类似于大多数 OS 显示的按钮,而无需手动实现此行为?
您可以使用 Windows UWP 获得类似的按钮样式。
在 WPF 中,您可以查看 MSDN 站点中的 Modern UI(MUI)。
它可以产生类似的结果。我已经与 mui 合作了几个月,它确实帮助我满足了想要拥有 Windows 10 喜欢 UI 体验的客户。我还必须像在开始菜单中一样创建图块。 MUI 帮了我大忙。
从Github得到MUI。 Modern UI for WPF
我也试过 devexpress and telerik 控件。也看看他们吧。
您可以使用 DevExpress to get themes 作为表单。或者您可以通过在每个按钮周围添加边框并在 MouseDown 和 MouseUp 事件处理程序
上更改其 Color/Visibility 来实现您自己的
使用 TargetType="Button" 在 Window.Resources 中定义样式,以便它影响 window 中的所有按钮。例如,虽然默认的 WPF 按钮具有鼠标悬停颜色更改和焦点矩形,但它不会在 MouseDown 上移动 "inwards",因此此示例显示如何执行此操作:
<Window.Resources>
<!--A Style that affects all Buttons-->
<Style TargetType="Button">
<Style.Triggers>
<Trigger Property="IsPressed" Value="True">
<Setter Property= "RenderTransform">
<Setter.Value>
<TransformGroup>
<ScaleTransform ScaleX="0.99" ScaleY="0.99"/>
<TranslateTransform X="2" Y="2"/>
</TransformGroup>
</Setter.Value>
</Setter>
<Setter Property="BorderThickness">
<Setter.Value>
<Thickness Left="2" Right="2" Top="2" Bottom="2"/>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>
将其插入 Window 属性之后和 Grid 或其他容器标记之前。
我注意到在 Windows 10 上,OS 显示的控件外观比 Winforms/WPF 上的默认设置更具吸引力。例如,选定的 OS 按钮具有较粗的蓝色边框,并且具有更好的交互性 "feel",而默认的 WPF 按钮显示为简单的灰色框:
OS:
WPF:
有没有办法以某种方式更改 WPF 中按钮的 "theme" 以使其行为类似于大多数 OS 显示的按钮,而无需手动实现此行为?
您可以使用 Windows UWP 获得类似的按钮样式。
在 WPF 中,您可以查看 MSDN 站点中的 Modern UI(MUI)。
它可以产生类似的结果。我已经与 mui 合作了几个月,它确实帮助我满足了想要拥有 Windows 10 喜欢 UI 体验的客户。我还必须像在开始菜单中一样创建图块。 MUI 帮了我大忙。
从Github得到MUI。 Modern UI for WPF
我也试过 devexpress and telerik 控件。也看看他们吧。
您可以使用 DevExpress to get themes 作为表单。或者您可以通过在每个按钮周围添加边框并在 MouseDown 和 MouseUp 事件处理程序
上更改其 Color/Visibility 来实现您自己的使用 TargetType="Button" 在 Window.Resources 中定义样式,以便它影响 window 中的所有按钮。例如,虽然默认的 WPF 按钮具有鼠标悬停颜色更改和焦点矩形,但它不会在 MouseDown 上移动 "inwards",因此此示例显示如何执行此操作:
<Window.Resources>
<!--A Style that affects all Buttons-->
<Style TargetType="Button">
<Style.Triggers>
<Trigger Property="IsPressed" Value="True">
<Setter Property= "RenderTransform">
<Setter.Value>
<TransformGroup>
<ScaleTransform ScaleX="0.99" ScaleY="0.99"/>
<TranslateTransform X="2" Y="2"/>
</TransformGroup>
</Setter.Value>
</Setter>
<Setter Property="BorderThickness">
<Setter.Value>
<Thickness Left="2" Right="2" Top="2" Bottom="2"/>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>
将其插入 Window 属性之后和 Grid 或其他容器标记之前。