0

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


      }
4

3 回答 3

1

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

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

问候,

米歇尔

于 2012-07-04T09:44:19.707 回答
0

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

PostBackOptions postBackOptions = new PostBackOptions(Button1);
            Button1.OnClientClick = "this.disabled=true;";
            Button1.OnClientClick += ClientScript.GetPostBackEventReference(postBackOptions);
于 2012-07-04T09:20:39.390 回答
0

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

于 2012-07-04T09:44:25.103 回答