zoukankan      html  css  js  c++  java
  • 微信聊天和通讯录按钮样式

    一、先用Path画一下轮廓

    <Path Stroke="Red" StrokeThickness="1" Margin="10" StrokeDashCap="Round">
         <Path.Data>
             <GeometryGroup>
                 <PathGeometry Figures="M 4,40 A 16,13 0 1 1 10,45 L 3,48 Z" />
             </GeometryGroup>
         </Path.Data>
    </Path>
    <Path Stroke="Red" StrokeThickness="1" StrokeDashCap="Round" Margin="50">
         <Path.Data>
             <GeometryGroup>
                 <PathGeometry Figures="M 12,30 A 6,10 0 1 1 18,30 L 30,40 L 30,45 L 0,45 L 0,40Z" />
                 <PathGeometry Figures="M 25,25 L 35,25"/>
                 <PathGeometry Figures="M 28,30 L 35,30"/>
                 <PathGeometry Figures="M 32,35 L 35,35"/>
             </GeometryGroup>
         </Path.Data>
    </Path>

    路径图如下

    二、将路径应用的样式里

        <!--聊天按钮的样式-->
        <Style x:Key="ChatStyle" TargetType="{x:Type RadioButton}">
            <Setter Property="FocusVisualStyle" Value="{StaticResource ButtonFocusVisual}"/>
            <Setter Property="Background" Value="Transparent"/>
            <Setter Property="BorderBrush" Value="Transparent"/>
            <Setter Property="BorderThickness" Value="0"/>
            <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
            <Setter Property="HorizontalContentAlignment" Value="Center"/>
            <Setter Property="VerticalContentAlignment" Value="Center"/>
            <Setter Property="Padding" Value="1"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type RadioButton}">
                        <Border>
                            <Path x:Name="btnPath" StrokeThickness="1" Stroke="Gray" Fill="#FF3E3E40">
                                <Path.Data>
                                    <GeometryGroup>
                                        <PathGeometry Figures="M 4,40 A 16,13 0 1 1 10,45 L 3,48 Z" />
                                    </GeometryGroup>
                                </Path.Data>
                            </Path>
                        </Border>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsChecked" Value="true">
                                <Setter Property="Fill" Value="#FF14D212" TargetName="btnPath"/>
                                <Setter Property="Stroke" Value="#FF14D212" TargetName="btnPath"/>
                            </Trigger>
                            <Trigger Property="IsMouseOver" Value="true">
                                <Setter Property="Stroke" Value="White" TargetName="btnPath"/>
                            </Trigger>
                            <MultiTrigger>
                                <MultiTrigger.Conditions>
                                    <Condition Property="IsChecked"  Value="true"/>
                                    <Condition Property="IsMouseOver" Value="true"/>
                                </MultiTrigger.Conditions>
                                <MultiTrigger.Setters>
                                    <Setter Property="Stroke" Value="#FF14D212" TargetName="btnPath"/>
                                </MultiTrigger.Setters>
                            </MultiTrigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    
        <!--通讯录的样式-->
        <Style x:Key="FriendStyle" TargetType="{x:Type RadioButton}">
            <Setter Property="FocusVisualStyle" Value="{StaticResource ButtonFocusVisual}"/>
            <Setter Property="Background" Value="Transparent"/>
            <Setter Property="BorderBrush" Value="Transparent"/>
            <Setter Property="BorderThickness" Value="0"/>
            <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
            <Setter Property="HorizontalContentAlignment" Value="Center"/>
            <Setter Property="VerticalContentAlignment" Value="Center"/>
            <Setter Property="Padding" Value="1"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type RadioButton}">
                        <Border>
                            <Path x:Name="btnPath" StrokeThickness="1" Stroke="Gray" Fill="#FF3E3E40">
                                <Path.Data>
                                    <GeometryGroup>
                                        <PathGeometry Figures="M 12,30 A 6,10 0 1 1 18,30 L 30,40 L 30,45 L 0,45 L 0,40Z" />
                                        <PathGeometry Figures="M 25,25 L 35,25"/>
                                        <PathGeometry Figures="M 28,30 L 35,30"/>
                                        <PathGeometry Figures="M 32,35 L 35,35"/>
                                    </GeometryGroup>
                                </Path.Data>
                            </Path>
                        </Border>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsChecked" Value="true">
                                <Setter Property="Fill" Value="#FF14D212" TargetName="btnPath"/>
                                <Setter Property="Stroke" Value="#FF14D212" TargetName="btnPath"/>
                            </Trigger>
                            <Trigger Property="IsMouseOver" Value="true">
                                <Setter Property="Stroke" Value="White" TargetName="btnPath"/>
                            </Trigger>
                            <MultiTrigger>
                                <MultiTrigger.Conditions>
                                    <Condition Property="IsChecked" Value="true"/>
                                    <Condition Property="IsMouseOver" Value="true"/>
                                </MultiTrigger.Conditions>
                                <MultiTrigger.Setters>
                                    <Setter Property="Stroke" Value="#FF14D212" TargetName="btnPath"/>
                                </MultiTrigger.Setters>
                            </MultiTrigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

    看下效果图

    注意要点有几个:

    1、Path原来必须要有填充,也就是说Fill必须要有值,否则会认为是透明,点击不到。

    2、一定要设置MultiTrigger,否则当button被选中的时候,鼠标划过,依然会变白色。

  • 相关阅读:
    六种常见排序算法的自我研究(冒泡排序,选择排序,快速排序,归并排序,插入排序,堆排序)
    设计模式学习总结(二)工厂模式
    SQL Server Reporting Service(SSRS) 第七篇 常见错误汇总
    SQL Server Reporting Service(SSRS) 第六篇 SSRS 部署总结
    设计模式学习总结(一)简单工厂模式
    设计模式学习总结(三)抽象工厂模式
    设计模式学习总结(四)单例模式
    SQL Server覆盖索引--有无包含列对数据库查询性能的影响分析
    Dev Express Report 学习总结(八)Dev Express Reports 常见问题总结
    docker命令笔记
  • 原文地址:https://www.cnblogs.com/ZXdeveloper/p/5997372.html
Copyright © 2011-2022 走看看