4

SplitButtonXceed の Extended WPF Toolkit から借用した WPF ウィンドウに があります。そのドロップダウン コンテンツは、いくつかRadioButtonの で構成されています。何かのようなもの:

<Window x:Class="WpfTest.Test3"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:tk="clr-namespace:Xceed.Wpf.Toolkit;assembly=Xceed.Wpf.Toolkit"
        Title="Test3" Height="300" Width="300">
    <Grid Height="25" Width="150">
        <tk:SplitButton Content="Default Command">
            <tk:SplitButton.DropDownContent>
                <StackPanel>
                    <RadioButton Content="Default Command" GroupName="variations" Margin="5" IsChecked="True"/>
                    <RadioButton Content="Alternate Command 1" GroupName="variations" Margin="5"/>
                    <RadioButton Content="Alternate Command 2" GroupName="variations" Margin="5"/>
                </StackPanel>
            </tk:SplitButton.DropDownContent>
        </tk:SplitButton>
    </Grid>
</Window>

これは次のようなものを生成します:

テスト

問題は、各 s をクリックしてRadioButtonもドロップダウン メニューが消えないことです。Clickグーグルで調べたところ、それぞれのイベントを処理する必要があることに気付きましたRadioButton。しかし、そのイベント ハンドラーでドロップダウン メニューを非表示にする方法がわかりません。補足として、 にMenuItem は のプロパティ StaysOpenOnClickがあるようですが、他のコントロールにはそのようなものはありません。

プログラムでこれを行うだけで十分ですが、MVVM の方法はありますか?

4

1 に答える 1

3

ラジオ ボタンに Checked イベントを追加し、 を使用しますSplitoButton.IsOpen=false;。このコードに従ってください。

Xaml

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:tk="clr-namespace:Xceed.Wpf.Toolkit;assembly=Xceed.Wpf.Toolkit"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <tk:SplitButton Name="SplitButton" Content="Default Command">

            <tk:SplitButton.DropDownContent>

                <StackPanel>
                    <RadioButton Checked="rb_Checked" Content="Default Command" GroupName="variations" Margin="5" IsChecked="True"/>
                    <RadioButton Checked="rb_Checked" Content="Alternate Command 1" GroupName="variations" Margin="5"/>
                    <RadioButton Checked="rb_Checked" Content="Alternate Command 2" GroupName="variations" Margin="5"/>
                </StackPanel>

            </tk:SplitButton.DropDownContent>
        </tk:SplitButton>
    </Grid>
</Window>

.cs

 private void rb_Checked(object sender, RoutedEventArgs e)
        {
            SplitButton.IsOpen = false;
        }
于 2016-09-27T07:05:01.423 に答える