zoukankan      html  css  js  c++  java
  • 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)
            {
               
            }
        }
    }
  • 相关阅读:
    Compiler OverView
    二叉查找树
    [C++] manage background threads with boost::thread
    模拟类式继承
    JavaScript Curry
    Get GetProcAddress Function Address
    ASP.MVC Session为null
    ASP.NET MVC项目Forms身份验证HttpContext.Current.User为空
    Java Bean Validation学习笔记
    java开发中sql注入正则表达式检测
  • 原文地址:https://www.cnblogs.com/easy5weikai/p/3069975.html
Copyright © 2011-2022 走看看