2013-10-08 62 views
0

我試圖在從源獲取數據時顯示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" /> 
+0

我的猜測是'Buids'是一個自定義類的列表,它使得'ComboBox'中的每個項目都是該類的一個項目,而不是一個字符串。這就是爲什麼'Hepper'不會顯示.. –

回答

3

您可以嘗試設置ComboBox.SelectedValue屬性而不是ComboBox.Text

我寧願顯示組合框上方的另一個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" /> 

我心想,如果該數據是獲取您的組合框變爲啓用。否則,你必須使用另一個綁定的可見性。

0

根據MSDN的ComboBox.Text財產

獲取或設置當前選定項目的文本。

因此,可以臨時添加一個項目到您的ComboBox與您所需的信息,選擇它,然後當你的數據到達填充ComboBox之前將其刪除。

相關問題