wpf - WPF:如何正确设置组合框下拉的宽度
问题描述
我即将DropDown
使用 XAML 在 WPF 中设计一个。Width
如果我的文本比我DropDown
的元素长于大于ComboBox
(TextBox
如红色箭头所示)。过长的文本由省略号 (...) 处理。
任何想法如何纠正这个问题?
这是我当前的 XAML 代码:
<ItemsControl x:Name="ItemsControl"
ItemsSource="{Binding FilterUiModels}">
<ItemsControl.ItemTemplate>
<DataTemplate x:Name="UiModelTemplate">
<ComboBox x:Name="FilterComboBox"
ItemsSource="{Binding AvailableItems}"
SelectedItem="{Binding FilterItem}"
ScrollViewer.CanContentScroll="False"
Width="200">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Width="{Binding ActualWidth, ElementName=FilterComboBox}"
Text="{Binding}"
TextTrimming="CharacterEllipsis">
</TextBlock>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
解决方案
Width
将的绑定Popup
到 的Width
并将ComboBox
附加ScrollViewer.HorizontalScrollBarVisibility
属性设置为false
以隐藏任何水平滚动条:
<ComboBox x:Name="FilterComboBox"
ItemsSource="{StaticResource localTimeList}"
SelectedItem="{Binding FilterItem}"
ScrollViewer.CanContentScroll="False"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
Width="200">
<ComboBox.Resources>
<Style TargetType="Popup">
<Setter Property="Width" Value="{Binding ActualWidth, ElementName=FilterComboBox}"/>
</Style>
</ComboBox.Resources>
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Width="{Binding ActualWidth, ElementName=FilterComboBox}"
Text="{Binding}"
TextTrimming="CharacterEllipsis">
</TextBlock>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
推荐阅读
- javascript - Google Appscript 中的第 3 方身份验证问题
- gradle - 如何解决 @SpringBootTest 导致“未找到给定包含的测试”的问题?
- c# - Concat 的实体框架核心 LINQ 树表达式问题
- javascript - 带有 JSX 的 Vue(TypeScript):不呈现嵌套元素
- slack - 在 MS Teams 中松弛传出 Webhook 到传入 Webhook
- jquery - 更好的隐藏和显示方法
- glsl - 顶点着色器动画随相机旋转
- c++ - 做while循环不执行功能
- excel-dna - 如何使用 Excel-DNA 检测对空单元格的引用?
- makefile - makefile 未运行 .PHONY 目标