【问题标题】:Default text of combobox组合框的默认文本
【发布时间】:2014-03-21 12:17:47
【问题描述】:

我希望我的组合框上有一个默认文本,因为我已将我的组合框绑定到某些项目列表...这是我的 xaml 文件代码。

<ComboBox x:Name="ProjectComboBox" 
          Text="{Binding ProjectNameBinding}" 
          ItemsSource="{Binding projectList, ElementName=MainWin}"
          SelectedValuePath="_id" DisplayMemberPath="_name"  
          SelectedItem="{Binding ProjectNameBindingClass, Mode=OneWayToSource}" 
          Width="130" Background="White" BorderThickness="1"  
          FontFamily="/TimeSheet;component/Resources/#Open Sans" FontSize="12" 
          Canvas.Right="159" Canvas.Top="8" Height="47">
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding _name}" TextWrapping="Wrap"/>
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>

【问题讨论】:

  • 如果您在文末提出具体问题,它会有所帮助。如果您描述了您已经尝试实现的目标,那么您也可以展示自己的努力,而不是盲目地让别人为您工作。 ;-)

标签: c# wpf xaml combobox


【解决方案1】:

你尝试过文本属性

<ComboBox x:Name="ProjectComboBox"
  IsEditable=True
  Text="{Binding ProjectNameBinding}" ....../>

您可以使用 SelectedIndex 属性并将其设置为 0(SelectedIndex=0),它显示给定 Source 中的第一项。

你可以像链接How to display default text "--Select Team --" in combo box on pageload in WPF?中那样做

【讨论】:

  • xmlns:Converters="clr-namespace:MyProject.Resources.Converters" ,xaml 中的这一行给出了一个错误,究竟要写什么,有什么要导入的,我错过了吗??? ????
  • 我没有在我的项目文件夹中正确嵌入转换器
  • 您还提出了一个非常好的方法,但实际上我不想那样...我已将我的代码发布下来检查一下
  • 你能帮我解决我发布的问题吗,我无法获得 alpha 图标透明度,如果你有任何解决方案,请查看我的问题
  • 是的,我看到了。检查 Converters 类命名空间。是 MyProject.Resources.Converters..?
【解决方案2】:

我最终通过采用一个新的文本块并在其上应用触发器,并使用它帮助的 IsNullConverter 类来实现它

<TextBlock Text="Select Project" IsHitTestVisible="False" FontFamily="/TimeSheet;component/Resources/#Open Sans" FontSize="14" Canvas.Right="191" Canvas.Top="22">
                        <TextBlock.Resources>
                            <Converters:IsNullConverter x:Key="isNullConverter"/>
                        </TextBlock.Resources>
                        <TextBlock.Style>
                            <Style TargetType="TextBlock">
                                <Style.Triggers>
                                    <DataTrigger Binding="{Binding ElementName=ProjectComboBox,Path=SelectedItem,Converter={StaticResource isNullConverter}}" Value="False">
                                        <Setter Property="Visibility" Value="Hidden"/>
                                    </DataTrigger>
                                </Style.Triggers>
                            </Style>
                        </TextBlock.Style>
                    </TextBlock>

【讨论】:

    【解决方案3】:

    试试:

    DefaultText="Not Specified"
    

    【讨论】:

    • 我认为组合框和文本块中都没有像“DefaultText”这样的属性
    • 我无法更改 C# 代码,因为我将我的 xml 文件绑定到它,即组合框列表中,我们可以有任何仅使用 XAML 代码的解决方案
    【解决方案4】:

    在页面加载或表单加载中试试这个

     comboBox.SelectedItem = null;
     comboBox.Text = "---select an item---";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-14
      • 2012-04-07
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      相关资源
      最近更新 更多