c# - 使用 XAML 样式的 WPF 3d 按钮样式
解决方案
这不是一个完整的解决方案,因为您仍然需要为鼠标悬停和禁用状态等内容添加额外的触发器,但作为起点,您可以创建类似的样式
<Window.Resources>
<SolidColorBrush x:Key="LightGreyBrush" Color="#c0c0c0"/>
<SolidColorBrush x:Key="MidGreyBrush" Color="#808080"/>
<SolidColorBrush x:Key="DarkGreyBrush" Color="#404040"/>
<Style TargetType="{x:Type Button}" x:Key="3DButtonStyle">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Grid>
<Border x:Name="TopLeftBorder" BorderBrush="{StaticResource LightGreyBrush}" BorderThickness="3,3,0,0" />
<Border x:Name="BottomRightBorder" BorderBrush="{StaticResource DarkGreyBrush}" BorderThickness="0,0,3,3" />
<Grid Margin="3" Background="{StaticResource MidGreyBrush}">
<ContentPresenter Margin="{TemplateBinding Padding}"/>
</Grid>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsPressed" Value="True">
<Setter TargetName="TopLeftBorder" Property="BorderBrush" Value="{StaticResource DarkGreyBrush}"/>
<Setter TargetName="BottomRightBorder" Property="BorderBrush" Value="{StaticResource LightGreyBrush}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<Grid>
<Button HorizontalAlignment="Left" VerticalAlignment="Top" Margin="16" Padding="16,8" Content="Click Me ..." Style="{StaticResource 3DButtonStyle}"/>
</Grid>
推荐阅读
- python - 为什么我的函数不能处理 NaN 值并抛出“float”对象不可下标?
- c++ - 尝试在内核模式下打印出所有进程的名称及其 PID
- r - 通过最近匹配加入两个数据帧
- python - 使用带有 tune.with_parameters 的可训练类时出现 Ray Tune 错误
- android - Firebase auth getDisplayedName,getPhoto url 问题
- correlation - 相关矩阵的corrplot和pheatmap之间的区别?如何使两者之间保持一致
- firebase - 使用 GitHub 操作在 Firebase 主机上自动部署 Vue-CLI 项目
- android-chips - 如何以编程方式正确设置芯片颜色
- git - 为什么当我在新分支中使用新提交执行 git 合并请求时,会出现非常旧的提交(可能从未合并过?)?
- amazon-web-services - 更大的 EBS 卷是否需要更多的 IOPS?