Windows 8.1组合框换行项目文本

本文关键字:换行 项目 文本 组合 Windows | 更新日期: 2023-09-27 18:29:11

我有一个非常长的字符串,它不包含在ComboBox项的一行中。

如何使其包裹项目的文本?

我尝试过这个,但在Windows 8.1非自愿应用中不起作用

这是我的comboBox

<ComboBox  x:Name="ChildrenAgePickerComboBox_0"  Style="{StaticResource ComboBoxWrappable}" ItemsSource="{Binding ChildrenAgeOptions}"  DisplayMemberPath="DisplayText" />

这是我想应用的样式,以便包装文本

<Style x:Key="ComboBoxWrappable"  TargetType="ComboBox" BasedOn="{StaticResource ComboBoxBase}">
        <Setter Property="ItemTemplate">
            <Setter.Value>
                <DataTemplate>
                    <TextBlock TextWrapping="Wrap" MinWidth="200" Text="{Binding}"/>
                </DataTemplate>
            </Setter.Value>
        </Setter>
    </Style>

结果是,我的组合框根本没有文本,当我打开它时也没有显示任何项目

DataTemplate有什么问题?它不会渲染项目。如果我不使用DataTemplate,它确实会渲染它们。

Windows 8.1组合框换行项目文本

为了总结注释,您没有看到您的文本,因为您不能同时使用DisplayMemberPathItemTemplate。您应该做的是从ComboBox中删除DisplayMemberPath="DisplayText",并将其移动到Text绑定中

<Style x:Key="ComboBoxWrappable" TargetType="ComboBox" BasedOn="{StaticResource ComboBoxBase}">
   <Setter Property="ItemTemplate">
      <Setter.Value>
         <DataTemplate>
            <TextBlock TextWrapping="Wrap" Text="{Binding DisplayText}"/>
         </DataTemplate>
      </Setter.Value>
   </Setter>
</Style>