我试图在组合框中设置一个固定文本,但是不能“覆盖”它总是将文本设置为SelectedItem.ToString()的默认行为。有没有办法做到这一点?
我目前的组合框看起来像这样:
<ComboBox x:Name="ddlSection"
Text="Hello World!"
ItemsSource="{Binding Sections}"
SelectedItem="{Binding SelectedSection, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
</ComboBox>
在这个组合框中应始终有“Hello World!”文字。无论选择哪个项目都显示,我现在唯一可以实现的方法是使用SelectedItemChanged并手动重置文本属性。
答案 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>