我的wpf窗口中有三个按钮,单击时禁用按钮的最佳方法是什么,启用其他两个按钮
<Button Name="initialzeButton"
Width="50"
Height="25"
Margin="460,0,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Click="initialzeButton_Click"
Content="Start"
Cursor="Hand" />
<Button Name="uninitialzeButton"
Width="50"
Height="25"
Margin="0,0,64,0"
HorizontalAlignment="Right"
VerticalAlignment="Center"
Click="uninitialzeButton_Click"
Content="Stop"
Cursor="Hand" />
<Button Name="loadButton"
Width="50"
Height="25"
Margin="0,0,9,0"
HorizontalAlignment="Right"
VerticalAlignment="Center"
Click="loadButton_Click"
Content="Load"
Cursor="Hand" />
现在我在每个按钮中使用这种方式:(
private void uninitialzeButton_Click(object sender, RoutedEventArgs e)
{
this.uninitialzeButton.IsEnabled = false;
if (!this.initialzeButton.IsEnabled)
{
this.initialzeButton.IsEnabled = true;
}
if (!this.loadButton.IsEnabled)
{
this.loadButton.IsEnabled = true;
}
}
答案 0 :(得分:1)
您对“最佳方式”的定义是什么?这是快速和几行代码或优雅或..
我想到了几种方式:
- 使用MVVM Light:1个relay命令用于三个按钮,3个依赖项对象(viewmodel中的属性)用于isEnabled,它们都将设置为false,只有将isEnabled设置为true才能单击该按钮(可以将其作为参数发送到relaycommand)。
- 在isEnabled属性上使用booleanconverters / booleaninverterconverters
- 将单反线按钮重新设置为按钮,用radiobutton组替换三个按钮。当选择一个单选按钮时,将取消选择其他单选按钮,将它们设置为禁用。防止单击取消选择的项目。
此致
米歇尔
答案 1 :(得分:0)
你可以在页面加载上做这样的事情 -
PostBackOptions postBackOptions = new PostBackOptions(Button1);
Button1.OnClientClick = "this.disabled=true;";
Button1.OnClientClick += ClientScript.GetPostBackEventReference(postBackOptions);
答案 2 :(得分:0)
对于纯XAML解决方案,将它们包装在样式剥离的ListBox中,并将单击与选择绑定,并将选择绑定到禁用状态。