2012-07-04 171 views
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; 
      } 


     } 

回答

0

你可以在页面加载时做财产以后这样的 -

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

这是'button1_clcik'。您可以为其他按钮添加相同的处理程序 – akhil

+0

我认为这是web项目我的项目是wpf – tito11

+0

然后添加适当的标记。 – akhil

1

是什么你对'最好的方式'的定义?它是快速的代码或优雅或..几行

几种方法来进入我的脑海:
- 使用MVVM光:1个relaycommand的三个按钮,3点依赖的对象(在视图模型属性)进行的IsEnabled其将全部设置为false,只有在单击的按钮(可以作为继电器命令中的参数发送)中将isEnabled设置为true。
- 在isEnabled属性上使用booleanconverters/booleaninverterconverters。
- Restyle单选按钮看起来像一个按钮,用单选按钮组替换三个按钮。当选择一个单选按钮时,其他按钮将被取消选择,将其设置为禁用。防止取消选择的项目被点击。

问候,

米歇尔

+0

+1“restyle单选按钮” –

0

对于纯XAML解决方案将它们包装在一个样式剥离ListBox和领带的点击选择,和选择为禁用状态。