我的组合框必须在整个窗口宽度上水平拉伸。这也解释了组合框下拉按钮和下拉菜单!因此,我将组合框的宽度设置为“自动”,并将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>