我的组合框必须在整个窗口宽度上水平延伸。这也解释了组合框下拉按钮和下拉菜单!所以我将组合框的宽度设置为“自动”并将 ItemsPanelTemplate 宽度绑定到组合框宽度。我还为项目使用了文本修剪数据模板。
启动应用程序时,下拉菜单的宽度与组合框按钮的宽度相对应,并且文本修剪也正在工作。在运行时调整窗口大小会导致以下行为:
- 调整窗口更宽 -> 下拉按钮和下拉菜单正确调整大小(它们在窗口宽度上保持完全拉伸)
- 调整窗口更小 -> 下拉按钮正确调整大小,下拉菜单不会调整大小比最初更小。因此,当拖动窗口非常小时,下拉菜单被切断。
如何在运行时根据下拉菜单按钮更改下拉菜单宽度?
<UserControl.Resources>
<DataTemplate x:Key="ComboBoxCustomTemplate">
<TextBlock Text="{Binding Name}" TextTrimming="WordEllipsis"/>
</DataTemplate>
<ItemsPanelTemplate x:Key="ComboBoxItemsPanel">
<VirtualizingStackPanel Orientation="Vertical" x:Name="iptCombo"
Width="{Binding ActualWidth, ElementName=radComboBox, Mode=OneWay}" HorizontalAlignment="Stretch" />
</ItemsPanelTemplate>
</UserControl.Resources>
<Grid x:Name="ImageView" Margin="5">
<telerik:RadComboBox x:Name="radComboBox"
HorizontalAlignment="Stretch"
VerticalAlignment="Top"
Width="Auto"
IsEditable="False"
ItemsSource="{Binding Items}"
ItemsPanel="{StaticResource ComboBoxItemsPanel}"
ItemTemplate="{StaticResource ComboBoxCustomTemplate}"
SelectedIndex="0" >
</telerik:RadComboBox>
</Grid>