【发布时间】:2014-11-05 16:01:53
【问题描述】:
我有一个很长的字符串,它不会在 ComboBox 项目的一行中提供。
我怎样才能让它包裹项目的文本?
我试过了,但在 Windows 8.1 unviseral App 中不起作用
这是我的组合框
<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,它会渲染它们。
【问题讨论】:
-
您可以将
MaxWidth设置为针对TextBlock或ComboBoxItem -
什么意思?宽度隐藏了内容?我相信绑定不起作用。
-
您是否尝试过类似
<TextBlock MaxWidth="200" TextWrapping="Wrap" Text="{Binding}"/>的操作,我相信绑定不起作用 是什么意思?如果您看到文字,那么它可以工作 -
所以问题是文本很长但不换行或根本没有出现文本?如果文本没有出现,则说明
DataContext或ItemsSource有问题 -
您是否尝试删除
DisplayMemberPath="DisplayText"并改为使用Text="{Binding DisplayText}?
标签: c# wpf windows xaml windows-8.1