如何使用下拉按钮宽度动态更改ComboBox下拉菜单宽度?

时间:2012-11-27 08:40:47

标签: silverlight combobox itemspaneltemplate

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

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

  1. 将窗口调整为更宽 - >下拉按钮和下拉菜单正确调整大小(它们在窗口宽度上完全伸展)
  2. 调整窗口大小 - >下拉按钮正确调整大小,下拉菜单不会调整小于最初的大小。因此,当拖动窗口非常小时,下拉菜单会被切断。
  3. 如何在运行时根据下拉菜单按钮更改下拉菜单宽度?

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

0 个答案:

没有答案