WPF Combobox DefaultValue (выберите)
Привет, у меня есть Combibox WPF, который показывает список Enums. Код ниже.
<ComboBox HorizontalAlignment="Left"
Margin="139,299,0,0"
VerticalAlignment="Top"
ItemsSource="{Binding Source={StaticResource Enum}}"
Width="78"/>
Однако, когда представление загружено, оно показывает первое перечисление в списке, но я хотел бы, чтобы он показывал "Пожалуйста, выберите", так что есть XAML для этого (С# в представлении, если это необходимо).
Спасибо
Ответы
Ответ 1
Все хорошие ответы, которые были предоставлены, но я использовал следующее, чтобы решить мою проблему.
<ComboBox SelectedIndex="0">
<ComboBox.ItemsSource>
<CompositeCollection>
<ListBoxItem>Please Select</ListBoxItem>
<CollectionContainer Collection="{Binding Source={StaticResource YOURDATASOURCE}}" />
</CompositeCollection>
</ComboBox.ItemsSource>
</ComboBox>
Спасибо всем, кто помог!
Ответ 2
Добавьте эти свойства в ваш комбинированный список, и вы можете установить текст по умолчанию "Пожалуйста, выберите" в комбинированном списке.
<ComboBox IsEditable="True" IsReadOnly="True" Text="Please Select"/>
Для более универсального решения вы можете создать водяной знак для выпадающего списка.
Ответ 3
Я сделал это с моим, работает для меня, так как у меня есть статические элементы.
<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>
Ответ 4
Это можно сделать с помощью следующего кода:
<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>
Всякий раз, когда вам нужен приведенный выше текст (текстовое поле), вы можете использовать VisibilityConverter для отображения вашего текста в верхней части выпадающего списка...
Добавьте что-то вроде этого в свои ресурсы:
<local:NullToVisibilityConverter x:Key="NullToVisibilityConverter" />
Ответ 5
Добавьте значение "Пожалуйста, выберите" в свой EnumCollection
Задайте значение по умолчанию в стикерете 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"/>
Ответ 6
Не знаю, как это сделать без кода, возможно, некоторые триггеры или DataTemplateSelectors...?
В кодировке:
- Добавить перечислимое свойство строки, которое будет содержать только одну строку: "Пожалуйста, выберите"
- В XAML установите
ItemsSource
в это свойство и SelectedIndex = 0
- В
DropDownOpened
набор событий ComboBox.ItemsSource
в вашу коллекцию Enum
Ответ 7
Установите значение ComboBox по умолчанию "SELL", когда элемент управления впервые загружается/инициализируется в окне WPF/пользовательском элементе управления:
<ComboBox x:Name="OrderType"
Width="100" Height="20"
SelectedIndex="1">
<ComboBoxItem Content="BUY"/>
<ComboBoxItem Content="SELL"/>
</ComboBox>