WPF Combobox DefaultValue(请选择)

时间:2014-04-17 10:31:47

标签: c# wpf xaml combobox

您好我有一个WPF组合框,显示了一个Enums列表。代码如下。

    <ComboBox HorizontalAlignment="Left" 
              Margin="139,299,0,0" 
              VerticalAlignment="Top" 
              ItemsSource="{Binding Source={StaticResource Enum}}"
              Width="78"/> 

然而,当加载视图时,它会显示列表中的第一个枚举,但我希望它显示“请选择”,因此有XAML可以执行此操作(如果需要,则在视图中使用C#)

由于

7 个答案:

答案 0 :(得分:34)

已提供的所有好答案,但我使用以下方法来解决我的问题

<ComboBox SelectedIndex="0">
    <ComboBox.ItemsSource>
        <CompositeCollection>
            <ListBoxItem>Please Select</ListBoxItem>
            <CollectionContainer Collection="{Binding Source={StaticResource YOURDATASOURCE}}" />
        </CompositeCollection>
    </ComboBox.ItemsSource>
</ComboBox>

感谢所有帮助过的人!

答案 1 :(得分:15)

将这些属性添加到组合框中,您可以在组合框中设置默认的“请选择”文本。

<IsEditable="True" IsReadOnly="True" Text="Please Select"/>

对于更通用的解决方案,您可以为组合框创建水印

答案 2 :(得分:9)

我和我一起这样做,对我有用,因为我有静态物品。

<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>

答案 3 :(得分:8)

您可以使用以下代码实现此目的:

<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" />

答案 4 :(得分:1)

将值“Please select”添加到您的EnumCollection

在组合框样式集中设置默认值

<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"/> 

答案 5 :(得分:1)

如果没有代码隐藏,可能是某些触发器或DataTemplateSelectors,不知道怎么做??

在代码隐藏中:

  1. 添加只包含一个字符串的可枚举字符串属性:“请选择”
  2. 在XAML中将ItemsSource设置为该属性,并SelectedIndex = 0
  3. DropDownOpened事件集ComboBox.ItemsSource中加入您的枚举

答案 6 :(得分:1)

在WPF窗口/用户控件中首次加载/初始化控件时,将ComboBox的默认值设置为“SELL”:

<ComboBox x:Name="OrderType" 
          Width="100" Height="20"
          SelectedIndex="1">
         <ComboBoxItem Content="BUY"/>
         <ComboBoxItem Content="SELL"/> 
</ComboBox>