WPF 多按钮如何实现按钮状态切换

109 阅读1分钟

WPF 多按钮如何实现按钮状态切换

image.png

namespace WPFTips.ButtonStatus
{
    /// <summary>
    /// StatusWindow.xaml 的交互逻辑
    /// </summary>
    public partial class StatusWindow : Window
    {
        public StatusWindow()
        {
            InitializeComponent();
        } 

        private void Btn_Status_Click(object sender, RoutedEventArgs e)
        {
            /*
             通过Tag属性来实现状态的切换
             */
            System.Windows.Controls.Button btn = sender as System.Windows.Controls.Button;
            if (btn != null)
            {
                bool tag = false;
                Type type = btn.Tag.GetType();
                if (type.FullName == "System.Boolean")
                {
                    tag = (bool)btn.Tag;
                }
                if (type.FullName == "System.String")
                {
                    tag = bool.Parse((string)btn.Tag);
                }
                if (tag)
                {
                    switch (btn.Name)
                    {
                        case "Btn_Status1":  break; 
                        case "Btn_Status2":  break; 
                        case "Btn_Status3":  break; 
                        case "Btn_Status4":  break; 
                        case "Btn_Status5":  break; 
                        default:
                            break;
                    }
                }
                btn.Tag = !tag;
                btn.Content = (bool)btn.Tag ? "切换前" : "切换后";
                //提示看看
                if (btn.Content?.ToString() == "切换前")
                {
                    MessageBox.Show("切换前状态:"+ btn.Content);
                }else if (btn.Content?.ToString() == "切换后")
                {
                    MessageBox.Show("切换后状态:" + btn.Content);
                }
            }
        }
    }
}
<Window x:Class="WPFTips.ButtonStatus.StatusWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WPFTips.ButtonStatus"
        mc:Ignorable="d"
        Title="WPF 多按钮如何实现按钮状态切换" Height="450" Width="800">
    <Grid Margin="24,24,24,0">
        <StackPanel Orientation="Vertical" HorizontalAlignment="Left">
            <Button x:Name="Btn_Status1" Click="Btn_Status_Click" Width="120" Height="35" Content="切换前" Tag="True" Margin="0,10,0,0"/>
            <Button x:Name="Btn_Status2" Click="Btn_Status_Click" Width="120" Height="35" Content="切换前" Tag="True" Margin="0,10,0,0"/>
            <Button x:Name="Btn_Status3" Click="Btn_Status_Click" Width="120" Height="35" Content="切换前" Tag="True" Margin="0,10,0,0"/>
            <Button x:Name="Btn_Status4" Click="Btn_Status_Click" Width="120" Height="35" Content="切换前" Tag="True" Margin="0,10,0,0"/>
            <Button x:Name="Btn_Status5" Click="Btn_Status_Click" Width="120" Height="35" Content="切换前" Tag="True" Margin="0,10,0,0"/>
        </StackPanel>

    </Grid>
</Window>