• WPF 开关按钮


    View Code
    <UserControl x:Class="Easy5.WPF.Controls.ToggleSwitchButton"
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
                 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
                 mc:Ignorable="d" 
                 d:DesignHeight="36" d:DesignWidth="96">
        <Grid x:Name="LayoutRoot"
              Background="Transparent"
              Width="96" Height="36">
            <Border BorderBrush="BurlyWood"
                    BorderThickness="2" Margin="4,2"
                    Padding="4">
                <Rectangle Name="fillRectangle"
                           Fill="Red"
                           Visibility="Collapsed"/>
            </Border>
            <Border Name="slideBorder"
                    BorderBrush="DarkGray"
                    BorderThickness="4,0"
                    HorizontalAlignment="Left">
                <Rectangle Stroke="Black"
                           Fill="Black"
                           StrokeThickness="2"
                           Width="20"/>
                
            </Border>
        </Grid>
    </UserControl>

    控件后台代码:

    View Code
    using System.Windows;
    using System.Windows.Input;
    using System.Windows.Controls;
    
    namespace Easy5.WPF.Controls
    {
        /// <summary>
        /// ToggleSwitchButton.xaml 的交互逻辑
        /// </summary>
        public partial class ToggleSwitchButton : UserControl
        {
            public static readonly DependencyProperty IsCheckedProperty =
                DependencyProperty.Register("IsChecked", typeof (bool), typeof (ToggleSwitchButton), new PropertyMetadata(default(bool), OnIsCheckedChanged));
    
    
            public event RoutedEventHandler Checked;
            public event RoutedEventHandler UnChecked;
    
            public bool IsChecked
            {
                get { return (bool) GetValue(IsCheckedProperty); }
                set { SetValue(IsCheckedProperty, value); }
            }   
    
            public ToggleSwitchButton()
            {
                InitializeComponent();
            }
    
            private static void OnIsCheckedChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args)
            {
                (obj as ToggleSwitchButton).OnIsCheckedChanged(args);
            }
    
            private void OnIsCheckedChanged(DependencyPropertyChangedEventArgs args)
            {
                fillRectangle.Visibility = IsChecked ? Visibility.Visible : Visibility.Collapsed;
                slideBorder.HorizontalAlignment = IsChecked ? HorizontalAlignment.Right : HorizontalAlignment.Left;
    
                if (IsChecked && Checked != null)
                {
                    Checked(this, new RoutedEventArgs());
                }
    
                if (!IsChecked && UnChecked != null)
                {
                    UnChecked(this, new RoutedEventArgs());
                }
            }
    
    
            protected override void OnMouseLeftButtonUp(MouseButtonEventArgs args)
            {
                args.Handled = true;
                IsChecked ^= true;
                base.OnMouseLeftButtonUp(args);
            }
    
        }
    }

    使用:

    <Window x:Class="Easy5.WPF.Controls.Test.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:easy5button="clr-namespace:Easy5.WPF.Controls;assembly=Easy5.WPF.Controls"
            xmlns:button="clr-namespace:Easy5.WPF.Controls;assembly=Easy5.WPF.Controls"
            Title="MainWindow" Height="350" Width="525">
        <Grid>
            <StackPanel>
                <button:ToggleSwitchButton
                    Checked="ToggleSwitchButton_OnChecked"
                    UnChecked="ToggleSwitchButton_OnUnChecked"/>
            </StackPanel>
        </Grid>
    </Window>
    

      

    View Code
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;
    
    namespace Easy5.WPF.Controls.Test
    {
        /// <summary>
        /// MainWindow.xaml 的交互逻辑
        /// </summary>
        public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
            }
    
            private void ToggleSwitchButton_OnChecked(object sender, RoutedEventArgs e)
            {
                
            }
    
            private void ToggleSwitchButton_OnUnChecked(object sender, RoutedEventArgs e)
            {
               
            }
        }
    }
  • 相关阅读:
    大数据学习之大数据简介03
    大数据学习之Linux进阶02
    大数据学习之Linux基础01
    连接数据库出现java.sql.SQLException: Unknown system variable 'tx_isolation'
    Linux中伪分布的搭建
    【TCP/IP】入门学习笔记 三
    【TCP/IP】入门学习笔记 二
    【TCP/IP】入门学习笔记 一
    【CentOS】CentOS7 自动同步时间:服务ntp,命令ntpdate
    【Mysql】- pt-online-schema-change在线更新大表字段、加索引
  • 原文地址:https://www.cnblogs.com/easy5weikai/p/3069975.html
Copyright © 2020-2023  润新知