2016-09-27 3 views
2

У меня есть SplitButton в моем окне WPF, которое заимствовано из расширенного инструментария WPF Xceed. Его раскрывающийся контент содержит около RadioButton с. Что-то вроде:WPF-Как скрыть выпадающее меню после нажатия

<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> 

, который генерирует что-то вроде этого:

test

Проблема заключается в том, когда я нажимаю на каждом из RadioButton сек ниспадающего меню не исчезнут. Я сделал несколько поисковых запросов и понял, что я должен обработать событие Click для каждого RadioButton. Но я не знаю, как скрыть раскрывающееся меню в этом обработчике событий. В качестве примечания, похоже, MenuItemhas the property ofStaysOpenOnClick, но для других элементов управления нет такой вещи.

Хотя делать это программно было бы достаточно, но есть ли способ MVVM для этого?

+1

Не совсем подходит для вашей проблемы, но почему вы предпочитаете радиокнопки над DropDownList? –

+0

@ Заметить, что такое выпадающий список? 'SplitButton' имеет свойство DropDownContent, которое может быть заполнено' MenuItem' или что-то вроде того, что я пробовал. Я не понял, что вы имеете в виду. –

+0

Извините, я имел в виду ComboBox: https://www.dotnetperls.com/combobox-wpf –

ответ

1

Добавить Проверено событие на вашем переключателе и используйте 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; 
     } 
Смежные вопросы