0

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

我当前的组合框如下所示:

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

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

4

2 回答 2

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>
于 2013-11-05T12:52:40.007 回答
2

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

在原始模板中,您会发现ContentPresenter其内容绑定到所选元素:

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

您可以将其替换ContentPresenter为您想要显示的任何内容,或者简单地将Content属性的值替换为您自己的绑定或硬编码值(例如“Hello world”)

于 2013-11-05T13:01:08.747 回答