1

我的组合框必须在整个窗口宽度上水平延伸。这也解释了组合框下拉按钮和下拉菜单!所以我将组合框的宽度设置为“自动”并将 ItemsPanelTemplate 宽度绑定到组合框宽度。我还为项目使用了文本修剪数据模板。

启动应用程序时,下拉菜单的宽度与组合框按钮的宽度相对应,并且文本修剪也正在工作。在运行时调整窗口大小会导致以下行为:

  1. 调整窗口更宽 -> 下拉按钮和下拉菜单正确调整大小(它们在窗口宽度上保持完全拉伸)
  2. 调整窗口更小 -> 下拉按钮正确调整大小,下拉菜单不会调整大小比最初更小。因此,当拖动窗口非常小时,下拉菜单被切断。

如何在运行时根据下拉菜单按钮更改下拉菜单宽度?

<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>
4

0 回答 0