【问题标题】:Disable button when clicked and make other buttons enabled单击时禁用按钮并启用其他按钮
【发布时间】:2012-07-04 17:44:25
【问题描述】:

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


      }

【问题讨论】:

    标签: c# wpf xaml


    【解决方案1】:

    您对“最佳方式”的定义是什么?它是快速和几行代码还是优雅或......

    我想到了几种方法:
    - 使用 MVVM Light:三个按钮的 1 个中继命令,isEnabled 的 3 个依赖对象(视图模型中的属性),它们都将设置为 false,仅对于单击的按钮将 isEnabled 设置为 true(可以作为参数发送到中继命令)。
    - 在 isEnabled 属性上使用 booleanconverters/booleaninverterconverters。
    - 重新设置单选按钮的样式,使其看起来像一个按钮,将三个按钮替换为单选按钮组。当一个单选按钮被选中时,其他单选按钮将被取消选择,将它们设置为禁用。防止点击取消选择的项目。

    问候,

    米歇尔

    【讨论】:

      【解决方案2】:

      你可以在页面加载时做这样的事情 -

      PostBackOptions postBackOptions = new PostBackOptions(Button1);
                  Button1.OnClientClick = "this.disabled=true;";
                  Button1.OnClientClick += ClientScript.GetPostBackEventReference(postBackOptions);
      

      【讨论】:

      • 这是给button1_clcik的。您可以为其他按钮添加相同的处理程序
      • 我认为这是 web 项目我的项目是 wpf
      【解决方案3】:

      对于纯 XAML 解决方案,将它们包装在样式剥离的 ListBox 中,并将单击与选择联系起来,将选择与禁用状态联系起来。

      【讨论】:

        猜你喜欢
        • 2012-06-02
        • 2019-02-01
        • 1970-01-01
        • 2021-04-02
        • 2015-03-28
        • 1970-01-01
        • 2015-06-20
        • 2017-01-03
        • 1970-01-01
        相关资源
        最近更新 更多