Salut, j'ai un WPF Combobox qui affiche une liste d'énumérations. Le code est ci-dessous.
<ComboBox HorizontalAlignment="Left"
Margin="139,299,0,0"
VerticalAlignment="Top"
ItemsSource="{Binding Source={StaticResource Enum}}"
Width="78"/>
Cependant, lorsque la vue est chargée, elle affiche la première énumération de la liste, mais j'aimerais qu'elle affiche "Veuillez sélectionner", il y a donc du XAML pour le faire (C # dans la vue si besoin est).
Merci
Toutes les bonnes réponses qui ont été fournies, mais j'ai utilisé ce qui suit pour résoudre mon problème
<ComboBox SelectedIndex="0">
<ComboBox.ItemsSource>
<CompositeCollection>
<ListBoxItem>Please Select</ListBoxItem>
<CollectionContainer Collection="{Binding Source={StaticResource YOURDATASOURCE}}" />
</CompositeCollection>
</ComboBox.ItemsSource>
</ComboBox>
Merci à tous ceux qui ont aidé!
Ajoutez ces propriétés à votre zone de liste déroulante et vous pouvez définir un texte par défaut "Veuillez sélectionner" sur une zone de liste déroulante.
<ComboBox IsEditable="True" IsReadOnly="True" Text="Please Select"/>
Pour une solution plus polyvalente, vous pouvez créer un filigrane pour la zone de liste déroulante
Je l'ai fait avec le mien, ça marche pour moi, car j'ai des objets statiques.
<ComboBox Name="cbxType" HorizontalAlignment="Left" Margin="116,41,0,0" VerticalAlignment="Top" Width="192">
<ComboBoxItem Name="create" IsSelected="True">create database</ComboBoxItem>
<ComboBoxItem Name="update">update database</ComboBoxItem>
</ComboBox>
Vous pouvez y parvenir avec le code suivant:
<Grid>
<ComboBox
MinWidth="120"
x:Name="MyCombo"
ItemsSource="{Binding FileTypes}"
SelectedItem="{Binding SelectedFileType}"/>
<TextBlock
VerticalAlignment="Center"
HorizontalAlignment="Center"
Visibility="{Binding SelectedItem, ElementName=MyCombo, Converter={StaticResource NullToVisibilityConverter}}"
IsHitTestVisible="False"
Text="Select Option... " />
</Grid>
Chaque fois que vous avez besoin du texte ci-dessus (la zone de texte), vous pouvez utiliser le VisibilityConverter pour afficher votre texte au-dessus de la zone de liste déroulante ...
Ajoutez quelque chose comme ça à vos ressources:
<local:NullToVisibilityConverter x:Key="NullToVisibilityConverter" />
Ajoutez la valeur "Veuillez sélectionner" à votre EnumCollection
Définissez la valeur par défaut dans le stylesetter combobox
<Style x:Key="ComboStyle" TargetType="{x:Type ComboBox}">
<Setter Property="SelectedIndex" Value="0"/>
</Style>
XAML:
<ComboBox HorizontalAlignment="Left"
Margin="139,299,0,0"
Style="{StaticResource ComboStyle}"
VerticalAlignment="Top"
ItemsSource="{Binding Source={StaticResource ComboBox}}"
Width="78"/>
Je ne sais pas comment le faire sans code-behind, peut-être quelques déclencheurs ou DataTemplateSelectors ...?
En code-behind:
ItemsSource
sur cette propriété et SelectedIndex = 0
DropDownOpened
ensemble d'événements ComboBox.ItemsSource
à votre collection EnumDéfinissez la valeur par défaut du ComboBox sur "SELL" lorsque le contrôle est chargé/initialisé pour la première fois dans une fenêtre WPF/un contrôle utilisateur:
<ComboBox x:Name="OrderType"
Width="100" Height="20"
SelectedIndex="1">
<ComboBoxItem Content="BUY"/>
<ComboBoxItem Content="SELL"/>
</ComboBox>