单击时禁用按钮并启用其他按钮

时间:2012-07-04 09:12:18

标签: c# wpf xaml

我的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;
            }


      }

3 个答案:

答案 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中,并将单击与选择绑定,并将选择绑定到禁用状态。

相关问题