c# - WPF 仅禁用某组按钮
问题描述
如何禁用一组按钮,但不是全部?我想禁用某个组,比如说 10 个按钮,但仍然可以单击剩余的 3 个。我要禁用的按钮将简单地命名为 button1、button2 等等。
解决方案
您可以为此目的使用数据绑定:
正如您在以下示例中看到的那样,我创建了一个管理不同按钮组的小类:
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>
祝你好运!
推荐阅读
- java - 循环通过特定的小部件
- python - 这是按需设置属性的好习惯(如果在尝试获取属性时不存在)?
- reactjs - 你试图重定向到你当前在 React.js 中的同一条路线
- reactjs - Commonly API call for different components in ReactJS Fetch
- python - 读取大型二进制文件(超过 500 MB)的最快方法?
- javascript - 将图像复制到剪贴板并将图像粘贴到文档编写器时图像变灰
- visual-studio-code - 如何使用推断类型改进 Rust 变量的代码完成?
- firebase - 无法在 Windows 上本地测试 Firebase Cloud Functions:“错误:监听 EACCES”
- netsuite - 我无法在子列表的标准 ITEM 字段中分配值
- java - java - 即使首先初始化堆栈,线程“AWT-EventQueue-0”中的 Java JFrame 异常 java.util.EmptyStackException