Combobox与固定文本

时间:2013-11-05 12:38:36

标签: c# wpf combobox

我试图在组合框中设置一个固定文本,但是不能“覆盖”它总是将文本设置为SelectedItem.ToString()的默认行为。有没有办法做到这一点?

我目前的组合框看起来像这样:

<ComboBox x:Name="ddlSection"
                Text="Hello World!"
                ItemsSource="{Binding Sections}"
                SelectedItem="{Binding SelectedSection, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
</ComboBox>

在这个组合框中应始终有“Hello World!”文字。无论选择哪个项目都显示,我现在唯一可以实现的方法是使用SelectedItemChanged并手动重置文本属性。

2 个答案:

答案 0 :(得分:2)

您需要制作自定义ItemTemplate。试试这个:

<ComboBox ItemsSource="{Binding Binding Sections}" SelectedItem="{Binding SelectedSection, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="Hello World!"/>
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>

答案 1 :(得分:2)

您必须更改ComboBox的模板。您可以通过右键单击然后选择编辑模板&gt;来创建副本。 编辑副本...

在原始模板中,您会找到一个ContentPresenter,其内容与所选元素绑定:

<ContentPresenter x:Name="contentPresenter" 
    ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}" 
    ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}"
    Content="{TemplateBinding SelectionBoxItem}" 
    ... />

您可以将此ContentPresenter替换为您想要显示的内容,或者只需将Content属性的值替换为您自己的绑定或硬编码值(例如“Hello world”)< / p>