首页 > 其他分享 >wpf ToggleButton选中效果和一个登录界面

wpf ToggleButton选中效果和一个登录界面

时间:2024-09-26 14:49:55浏览次数:1  
标签:ActualHeight 界面 登录 选中 blueQ ToggleButton wpf

先看效果

 

我修改了ToggleButton的ControlTemplate,在ContentPresenter外面加了4个Border,控制4个Border的位置在ControlTemplate的左上、右上、左下、右下,选中时,触发4个边框的BorderThickness
<Setter Property="BorderThickness" TargetName="brdOut1" Value="2,2,0,0"/>
<Setter Property="BorderThickness" TargetName="brdOut2" Value="0 2 2 0"/>
<Setter Property="BorderThickness" TargetName="brdOut3" Value="2 0 0 2"/>
<Setter Property="BorderThickness" TargetName="brdOut4" Value="0 0 2 2"/>

<Style   TargetType="{x:Type ToggleButton}"> 
        <Setter Property="Background" Value="Transparent"/>
        <Setter Property="BorderBrush" Value="DarkGray"/> 
        <Setter Property="BorderThickness" Value="1"/> 
        <Setter Property="Padding" Value="0"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type ToggleButton}">
                    <Grid>
                        <Border x:Name="brdOut1"  BorderBrush="{StaticResource MaterialDesignGroupBorder}" Width="20" Height="20" HorizontalAlignment="Left" VerticalAlignment="Top"/>
                        <Border x:Name="brdOut2" BorderBrush="{StaticResource MaterialDesignGroupBorder}" Width="20" Height="20" HorizontalAlignment="Right" VerticalAlignment="Top"/>
                        <Border x:Name="brdOut3" BorderBrush="{StaticResource MaterialDesignGroupBorder}" Width="20" Height="20" HorizontalAlignment="Left" VerticalAlignment="Bottom"/>
                        <Border x:Name="brdOut4" BorderBrush="{StaticResource MaterialDesignGroupBorder}" Width="20" Height="20" HorizontalAlignment="Right" VerticalAlignment="Bottom"/>
 
                        <Border Margin="2" x:Name="border" BorderBrush="{TemplateBinding BorderBrush}" CornerRadius="0" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True">

                          <ContentPresenter Grid.Row="1" x:Name="contentPresenter" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" ContentStringFormat="{TemplateBinding ContentStringFormat}" Focusable="False" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/> 
                         </Border>
                    </Grid>
                    <ControlTemplate.Triggers>
                       
                        <Trigger Property="IsChecked" Value="True">
                            <Setter Property="BorderThickness" TargetName="brdOut1" Value="2,2,0,0"/>
                            <Setter Property="BorderThickness" TargetName="brdOut2" Value="0 2 2 0"/>
                            <Setter Property="BorderThickness" TargetName="brdOut3" Value="2 0 0 2"/>
                            <Setter Property="BorderThickness" TargetName="brdOut4" Value="0 0 2 2"/>

                        </Trigger>
                       
                        </DataTrigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

 

登录界面

之前看过一个html的登录界面效果挺好,就用wpf实现了一个

 

我是用的一个蓝色的圆,移动了圆的位置,在登录界面白色背景上形成了一个弧形划分的效果;当然也可以用背景图,但是我也没找到类似的图;这样做还有个好处,可以根据系统主题,变换登录界面弧形颜色。
右半部分的输入框部分代码我没贴。

<Window
      Loaded="Window_Loaded"   >
   
    <Grid> 
            <Ellipse Grid.Row="1" x:Name="blueQ" Stroke="Black"    Fill="#FF1C84EE"/> 
    </Grid>
</Window>
private void Window_Loaded(object sender, RoutedEventArgs e)
        {

            blueQ.Width = this.ActualHeight * 2;
            blueQ.Height = this.ActualHeight * 2;
            blueQ.Margin = new Thickness(-this.ActualHeight, -this.ActualHeight, 0, 0);
 
        }

 

标签:ActualHeight,界面,登录,选中,blueQ,ToggleButton,wpf
From: https://www.cnblogs.com/czly/p/18433342

相关文章

  • WPF InkCanvas selection mode, save all/selected strokes, load strokes file, sav
    //xaml<Windowx:Class="WpfApp416.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.mi......
  • WPF Panel超出边界
    关于StackPanel和Grid这两种常用的WPF布局控件的不同行为1.StackPanel的行为:StackPanel设计用于简单地将元素堆叠在一起(垂直或水平)。它不会限制其子元素的大小,允许它们按需增长。这意味着:子元素可以超出StackPanel的边界StackPanel不会自动调整大小以适应其内容如果内......
  • DevExpress WPF中文教程:如何解决编辑单元格值的常见问题?
    DevExpressWPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpressWPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。无论是Office办公软件的衍伸产品,还是以数据为中心......
  • WPF Error XLS0108 Entity references or sequences beginning with an ampersand '&'
    //https://img1.baidu.com/it/u=3991277133,2041185316&fm=253 <ImageSource="https://img1.baidu.com/it/u=3991277133,2041185316&fm=253"/>SeverityCodeDescriptionProjectFileLineSuppressionStateDetailsErr......
  • wpf ToggleButton选中效果
    先看效果 <StyleTargetType="{x:TypeToggleButton}"><SetterProperty="Background"Value="Transparent"/><SetterProperty="BorderBrush"Value="DarkGray"/><......
  • C# + WPF 音频播放器 界面优雅,体验良好
    C#+WPF音频播放器界面优雅,体验良好 合集-.NET开源工具(18)  阅读目录前言项目介绍项目页面项目源码项目地址最后前言本文介绍一款使用C#与WPF开发的音频播放器,其界面简洁大方,操作体验流畅。该播放器支持多种音频格式(如MP4、WMA、OGG、FLAC......
  • .NET 6.0 + WPF 使用 Prism 框架实现导航
    .NET6.0+WPF使用Prism框架实现导航 合集-.NET基础知识(4) 1..NET9优化,抢先体验C#13新特性08-202.《黑神话:悟空》神话再现,虚幻引擎与Unity/C#谁更强?08-213..NET6.0+WPF使用Prism框架实现导航09-114.2024年C#高效开发:精选实用类库09-23收起 ......
  • WPF中控件拖放(二)——拖放示例
    1.创建拖放对象1.1创建一个圆自定义控件,UI代码如下(Circle.xaml):<UserControlx:Class="WpfApp1.Circle"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006......
  • WPF embed C# code into xaml
    <Windowx:Class="WpfApp412.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft......
  • WPF Textblock Run glyphFontSize TextDecorations
    <Windowx:Class="WpfApp412.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft......