WPF zone de liste de Boutons: comment changer l'élément sélectionné, cliquez avec le XAML
J'ai basé sur un modèle ListBox
:
<ListBox Grid.Row="0" Grid.Column="1" Background="Transparent" BorderThickness="0" x:Name="mainMenu"
ItemsSource="{Binding Source={x:Static local:MenuConfig.MainMenu}, Mode=OneTime}"
IsSynchronizedWithCurrentItem="True">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<EventSetter Event="PreviewMouseUp" Handler="SelectCurrentItem"/>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"></StackPanel>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<Button>
<StackPanel>
<Image Source="{Binding Icon}" MaxHeight="32" MaxWidth="32"/>
<TextBlock Text="{Binding Label}"/>
</StackPanel>
</Button>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
L'élément sélectionné est mis à jour manuellement avec le code behind:
private void SelectCurrentItem(object sender, MouseButtonEventArgs e)
{
ListBoxItem item = (ListBoxItem) sender;
item.IsSelected = true;
}
Est-il un moyen de le faire (mise à jour de l'élément sélectionné sur le bouton de la souris) avec XAML seulement ?
OriginalL'auteur Catalin DICU | 2010-02-03
Vous devez vous connecter pour publier un commentaire.
En général, vous le style de votre
DataTemplate
de regarder et de répondre comme un bouton si c'est l'effet que vous voulez par exempleVous pouvez également définir la
ItemContainerStyle
pour remplacer la valeur par défaut de style pour laSelectedItem
:OriginalL'auteur Kevin Mills
Le bouton définis dans votre
DataTemplate
sera intercepter l'événement click avant laListBoxItem
peut le manipuler. Supprimer laItemContainerStyle
et laButton
de votreDataTemplate
.OriginalL'auteur Kevin Mills
Un
ListBox
pistes et sélectionne l'élément en cours pour vous, vous n'avez pas besoin de faire dans le code. supprimer cettevous effectuez un travail des thats fait pour vous sortir de la boîte.
OriginalL'auteur Aran Mulholland