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>