WPF Combobox DefaultValue(请选择)

use*_*422 25 c# wpf xaml combobox

嗨,我有一个WPF组合框,显示了一个Enums列表.代码如下.

    <ComboBox HorizontalAlignment="Left" 
              Margin="139,299,0,0" 
              VerticalAlignment="Top" 
              ItemsSource="{Binding Source={StaticResource Enum}}"
              Width="78"/> 
Run Code Online (Sandbox Code Playgroud)

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

谢谢

use*_*422 41

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

<ComboBox SelectedIndex="0">
    <ComboBox.ItemsSource>
        <CompositeCollection>
            <ListBoxItem>Please Select</ListBoxItem>
            <CollectionContainer Collection="{Binding Source={StaticResource YOURDATASOURCE}}" />
        </CompositeCollection>
    </ComboBox.ItemsSource>
</ComboBox>
Run Code Online (Sandbox Code Playgroud)

感谢所有帮助过的人!

  • 好方法,但问题是SelectedItem或SelectedValue将是"System.Windows.Controls.ComboBoxItem:Please Select" (2认同)

Kri*_*hna 18

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

<ComboBox IsEditable="True" IsReadOnly="True" Text="Please Select"/>
Run Code Online (Sandbox Code Playgroud)

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


小智 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>
Run Code Online (Sandbox Code Playgroud)


小智 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>
Run Code Online (Sandbox Code Playgroud)

每当您需要上述文本(文本框)时,您可以使用VisibilityConverter在组合框顶部显示您的文本...

在您的资源中添加以下内容:

<local:NullToVisibilityConverter x:Key="NullToVisibilityConverter" />
Run Code Online (Sandbox Code Playgroud)