C# 带有固定文本的组合框
我试图在组合框内设置固定文本,但a无法“覆盖”默认行为,即它总是将文本设置为SelectedItem.ToString()。有办法做到这一点吗 我当前的组合框如下所示:C# 带有固定文本的组合框,c#,wpf,combobox,C#,Wpf,Combobox,我试图在组合框内设置固定文本,但a无法“覆盖”默认行为,即它总是将文本设置为SelectedItem.ToString()。有办法做到这一点吗 我当前的组合框如下所示: <ComboBox x:Name="ddlSection" Text="Hello World!" ItemsSource="{Binding Sections}" SelectedItem="{Binding Selected
<ComboBox x:Name="ddlSection"
Text="Hello World!"
ItemsSource="{Binding Sections}"
SelectedItem="{Binding SelectedSection, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
</ComboBox>
在这个组合框中,无论选择了什么项目,都应该始终显示文本“Hello World!”,现在唯一可以实现这一点的方法是使用SelectedItemChanged并手动重置text属性。您需要创建一个自定义的
项目模板。试试这个:
<ComboBox ItemsSource="{Binding Binding Sections}" SelectedItem="{Binding SelectedSection, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="Hello World!"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
您需要制作一个自定义的ItemTemplate
。试试这个:
<ComboBox ItemsSource="{Binding Binding Sections}" SelectedItem="{Binding SelectedSection, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="Hello World!"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
您必须更改组合框的模板。您可以通过右键单击然后选择编辑模板>编辑副本来创建副本
在原始模板中,您将找到一个ContentPresenter
,其内容绑定到所选元素:
<ContentPresenter x:Name="contentPresenter"
ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}"
ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}"
Content="{TemplateBinding SelectionBoxItem}"
... />
您可以将此ContentPresenter
替换为您想要显示的任何内容,或者只需将Content
属性的值替换为您自己的绑定值或硬编码值(例如“Hello world”)您必须更改组合框的模板。您可以通过右键单击然后选择编辑模板>编辑副本来创建副本
在原始模板中,您将找到一个ContentPresenter
,其内容绑定到所选元素:
<ContentPresenter x:Name="contentPresenter"
ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}"
ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}"
Content="{TemplateBinding SelectionBoxItem}"
... />
您可以将此ContentPresenter
替换为您想要显示的任何内容,或者只需将Content
属性的值替换为您自己的绑定或硬编码值(例如“Hello world”)用户将如何看,他已经选择了另一个项目?文本将始终保持Hello World,但当弹出窗口打开时,用户可以选择不同的项目?这对你有多大意义?我知道这不是默认行为,用户不会看到当前选择的内容,但很难解释为什么我需要它。是的,这正是我想要的,我很抱歉这对你来说没有任何意义,但是有没有办法做到呢。使用DataTemplates或ControlTemplates。@devhedgehog能否请您提供一个更详细的解释性答案,并且再次建议不要与gleng相同,弹出窗口中的项目应保持原样并显示“正确”,只有文本框(在comboxbox中)应显示不同的值(“Hello World!”)。用户将如何看待,他已经选择了另一个项目?文本将始终保持Hello World,但当弹出窗口打开时,用户可以选择不同的项目?这对你有多大意义?我知道这不是默认行为,用户不会看到当前选择的内容,但很难解释为什么我需要它。是的,这正是我想要的,我很抱歉这对你来说没有任何意义,但是有没有办法做到呢。使用DataTemplates或ControlTemplates。@devhedgehog您能提供一个更详细的解释吗?同样,您不建议与gleng相同,弹出窗口中的项目应保持原样并显示“正确”,只有文本框(在comboxbox中)应显示不同的值(“Hello World!”)。抱歉,但这不是我喜欢做的,由于这将更改列表中的项目,因此列表应显示正确的值,但仅文本应不同(固定)。这不会更改列表中的项目。它改变了它们的显示方式。是的,这就是我的意思,我并不希望项目按原样显示,但无论选择哪个项目,文本框部分中的文本应始终包含相同的文本。抱歉,但这不是我喜欢做的,因为这将更改列表中的项目,列表应显示正确的值,但仅文本应不同(固定)。这不会更改列表中的项目。它改变了它们的显示方式。是的,这就是我的意思,这不是我所希望的项目应按原样显示,但无论选择了什么项目,文本框部分中的文本应始终包含相同的文本。