在获取数据时在组合框上设置文本

时间:2013-10-08 08:05:27

标签: wpf combobox

我正在尝试在ComboBox中显示默认文本,而我从源中获取数据,但它没有显示任何内容。

<ComboBox  
         Grid.Row="1" 
         Grid.Column="2" 
         Text="Hepper"
         ItemsSource="{Binding Builds}"
         SelectedItem="{Binding SelectedBuild}"
         DisplayMemberPath="VersionNo" 
         IsReadOnly="True" 
         IsEnabled="{Binding SelectedBuildEnable}" 
         VerticalAlignment="Top" 
         HorizontalAlignment="Left" 
         Width="180" 
         Height="30" 
         MinWidth="180" />

2 个答案:

答案 0 :(得分:3)

您可以尝试设置ComboBox.SelectedValue属性而不是ComboBox.Text

我更喜欢在ComboBox上方显示另一个TextBlock来显示默认文本:

<!-- don't forget to define the converter in your resources -->
<UserControl.Resources>
    <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>
</UserControl.Resources>    

<!-- your Control -->
<ComboBox  
     Grid.Row="1" 
     Grid.Column="2" 
     x:Name="ComboBoxElement"
     ItemsSource="{Binding Builds}"
     SelectedItem="{Binding SelectedBuild}"
     DisplayMemberPath="VersionNo" 
     IsReadOnly="True" 
     IsEnabled="{Binding SelectedBuildEnable}" 
     VerticalAlignment="Top" 
     HorizontalAlignment="Left" 
     Width="180" 
     Height="30" 
     MinWidth="180" />

<TextBlock 
      Grid.Row="1" 
      Grid.Column="2" 
      Visibility="{Binding IsEnabled, ElementName=ComboBoxElement, Converter={StaticResource BooleanToVisibilityConverter}}" 
      IsHitTestVisible="False" 
      Text="Hepper" 
      VerticalAlignment="Top" 
      HorizontalAlignment="Left" 
      Margin="15,5" />

我猜想如果获取数据,您的ComboBox就会启用。否则,您必须使用另一个绑定来获得可见性。

答案 1 :(得分:0)

根据MSDN,ComboBox.Text属性

  

获取或设置当前所选项目的文本。

因此,您可以使用所需的消息临时将项目添加到ComboBox,选择该项目,然后在数据到达时填写ComboBox之前将其删除。