首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在WPF ComboBox中正确显示过长的文本

如何在WPF ComboBox中正确显示过长的文本
EN

Stack Overflow用户
提问于 2012-05-11 18:30:59
回答 4查看 10.3K关注 0票数 9

我有一个ComboBox,可以显示不同长度的文本。对于不是很长的文本,没有问题。对于长于ComboBox宽度的文本,我想裁剪文本并添加"...“(省略号)以正确地显示它们。底线是我不想改变ComboBox的宽度。有人知道怎么做吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-05-11 18:38:10

ComboBox使用自定义ItemTemplate,这将使用TextTrimming属性设置为CharacterEllipsisTextBlock

示例:

代码语言:javascript
运行
复制
<ComboBox ItemsSource="..." SelectedValuePath="...">
  <ComboBox.ItemTemplate>
    <DataTemplate>
      <TextBlock 
        Text="{Binding ...}" 
        TextTrimming="CharacterEllipsis" />
    </DataTemplate>
  </ComboBox.ItemTemplate>
</ComboBox>
票数 13
EN

Stack Overflow用户

发布于 2018-01-30 08:36:02

正如罗斯所说,答案是实现一个自定义的ItemTemplate。但是,为了使其正常工作,您需要正确地进行绑定。

关于此方法的注意事项:您不能同时设置DisplayMemberPathItemTemplate,它必须是其中之一。

因此,对于显示成员是项的一般情况(如字符串),您可以使用不带属性的绑定来绑定到模板的DataContext

代码语言:javascript
运行
复制
<ComboBox ItemsSource="..." SelectedValuePath="...">
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding }" TextTrimming="CharacterEllipsis" />
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>

或者,你可以把它放在一种风格中。

代码语言:javascript
运行
复制
<Style TargetType="{x:Type ComboBox}">
    <Setter Property="ItemTemplate">
        <Setter.Value>
            <DataTemplate>
                <TextBlock Text="{Binding }" TextTrimming="CharacterEllipsis" />
            </DataTemplate>
        </Setter.Value>
    </Setter>
</Style>

对于要绑定到对象的特定属性的情况(与使用DisplayMemberPath属性的方式类似),请将绑定替换为要绑定的对象上的属性的绑定。因此,将我第一个示例中的第四行替换为如下所示:

代码语言:javascript
运行
复制
<TextBlock Text="{Binding MyDisplayMemberProperty}" TextTrimming="CharacterEllipsis" />

绑定位于绑定到ComboBox的类型的单个项的上下文中。要使这一点更明确,您可以执行以下操作:

代码语言:javascript
运行
复制
<DataTemplate DataType="{x:Type namespace:MyItemType}">
    <!-- My DataTemplate stuff here -->
</DataTemplate>

当您在DataTemplate中编写代码时,这将为您提供有关对象上的属性的提示。

票数 7
EN

Stack Overflow用户

发布于 2012-05-11 18:36:46

您可以对组合框中的文本块使用TextTrimming CharacterEllipsisWordEllipsis

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10549700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档