首页 > 解决方案 > WPF 仅禁用某组按钮

问题描述

如何禁用一组按钮,但不是全部?我想禁用某个组,比如说 10 个按钮,但仍然可以单击剩余的 3 个。我要禁用的按钮将简单地命名为 button1、button2 等等。

标签: c#wpf

解决方案


您可以为此目的使用数据绑定:

正如您在以下示例中看到的那样,我创建了一个管理不同按钮组的小类:

 public partial class MainWindow : Window
{
    ButtonGroupsController MyButtonGroups = new ButtonGroupsController();
    public MainWindow()
    {
        InitializeComponent();
        this.DataContext = MyButtonGroups;
        MyButtonGroups.Group1Enable = false;
        MyButtonGroups.Group2Enable = true;

    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        MyButtonGroups.Group1Enable = !MyButtonGroups.Group1Enable;
        MyButtonGroups.Group2Enable = !MyButtonGroups.Group2Enable;
    }
}

public class ButtonGroupsController : INotifyPropertyChanged
{
    private bool group1Enable = false;
    private bool group2Enable = false;

    public bool Group1Enable
    {
        get
        {
            return group1Enable;
        }
        set
        {
            group1Enable = value;
            if (PropertyChanged!=null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs("Group1Enable"));
            }
        }
    }
    public bool Group2Enable
    {
        get
        {
            return group2Enable;
        }
        set
        {
            group2Enable = value;
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs("Group2Enable"));
            }
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;
}

和 XAML:

<StackPanel>
        <Button  IsEnabled="{Binding Group1Enable , Mode=OneWay}" Click="Button_Click">click me</Button>
        <Button IsEnabled="{Binding Group1Enable, Mode=OneWay}" Click="Button_Click">click me</Button>
        <Button IsEnabled="{Binding Group1Enable, Mode=OneWay}" Click="Button_Click">click me</Button>
        <Button  IsEnabled="{Binding Group2Enable, Mode=OneWay }" Click="Button_Click">click me</Button>
        <Button IsEnabled="{Binding Group2Enable, Mode=OneWay}" Click="Button_Click">click me</Button>
        <Button IsEnabled="{Binding Group2Enable, Mode=OneWay}" Click="Button_Click">click me</Button>
    </StackPanel>

祝你好运!


推荐阅读