0

wpfウィンドウに3つのボタンがあります。クリックしたときにボタンを無効にし、他の2つのボタンを有効にする最良の方法は何ですか。

<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 を使用します: 3 つのボタンに 1 つのリレーコマンド、isEnabled に 3 つの依存オブジェクト (viewmodel のプロパティ) をすべて false に設定し、クリックされたボタンに対してのみ isEnabled を true に設定します (これは可能性があります)。リレーコマンドのパラメーターとして送信されます)。
- isEnabled プロパティで booleanconverters/booleaninverterconverters を使用します。
- ラジオボタンのスタイルを変更してボタンのように見せ、3 つのボタンをラジオボタン グループに置き換えます。1 つのラジオボタンが選択されると、他のボタンは選択解除され、無効としてスタイルされます。選択解除されたアイテムがクリックされないようにします。

よろしく、

ミシェル

于 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 に答える