2017-08-28 6 views
2

J'ai défini un bouton de division dans WPF (C#) avec une source d'élément lié.mahapps SplitButton expand on click

La liste d'éléments ne sera développée que lorsque l'utilisateur cliquera sur la flèche située à droite du composant SplitButton. Comment étendre la liste lorsque l'utilisateur clique sur la zone SplitButton?

Comment faire pour étendre la liste lorsque l'utilisateur clique sur la zone SplitButton?

J'ai essayé de gérer l'événement click et de définir la propriété IsExpanded = true, mais elle disparaît automatiquement au bout d'une seconde.

<Controls:SplitButton Name="SplitButton_Test" 
       Width="100" 
       HorizontalAlignment="Left" 
       HorizontalContentAlignment="Left" 
       ItemsSource="{Binding Dictionary_Test}" 
       DisplayMemberPath="Value" 
       SelectedValuePath="Key" 
       Click="Test_Click"> 
    <Controls:SplitButton.Icon> 
     <iconPacks:PackIconMaterial Margin="6" Kind="Alert" /> 
    </Controls:SplitButton.Icon> 
</Controls:SplitButton> 

private void Test_Click(object sender, RoutedEventArgs e) 
{ 
    if (SplitButton_Test.IsExpanded == false) 
    { 
     e.Handled = true; 
     SplitButton_Test.IsExpanded = true; //Doesn't work, closes automatically after 1 second 
    } 
} 

Répondre

0

Ce code MahApps est le fermer:

//Make popup close even if no selectionchanged event fired (case when user select the save item as before) 
    void ListBoxPreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
    { 
     var item = ContainerFromElement(_listBox, e.OriginalSource as DependencyObject) as ListBoxItem; 
     if (item != null) 
     { 
      IsExpanded = false; 
     } 
    } 

actuellement à https://github.com/MahApps/MahApps.Metro/blob/develop/src/MahApps.Metro/MahApps.Metro.Shared/Controls/SplitButton.cs#L339

Vous devez supprimer ce gestionnaire d'événements. Comment? C'est toute une autre question.

+0

Merci! Comment puis-je l'enlever proprement? :) – daniol

+0

Je ne sais pas. J'ai cherché ici et il y a des questions et réponses mais je n'en ai pas essayé. Une façon est de construire MahApps à partir de la source et supprimer ce code. C'est peut-être le moyen le plus facile. –