【问题标题】:WPF combobox size on drag GridSplitter拖动 GridSplitter 时的 WPF 组合框大小
【发布时间】:2011-09-02 22:33:57
【问题描述】:

如何锚定一个组合框,以便在拖动拆分器时它会自动调整大小。

我尝试使用堆栈面板无济于事,甚至将 Horizo​​ntalAlignment 和 Horizo​​ntalContentAlignment 设置为拉伸;这是行不通的。

我需要组合框与拖动的部分一样宽。在非 wpf 中,您只是锚定了组合,在 wpf 中,该选项不可用。

<StackPanel Orientation="Horizontal">
    <Label Content="View By" 
            Padding="5" 
            Height="30" />
    <ComboBox Name="ddSelector" 
            Height="25" 
            Width="auto" 
            HorizontalAlignment="Stretch" 
            VerticalAlignment="Stretch" 
            HorizontalContentAlignment="Stretch" 
            Margin="16,0,0,0" />
</StackPanel>

堆栈面板在第 0 行,网格拆分器在第 1 行。

<Grid.ColumnDefinitions>
    <ColumnDefinition Width="275"></ColumnDefinition>
    <ColumnDefinition Width="auto"></ColumnDefinition>
    <ColumnDefinition Width="350"></ColumnDefinition>
    <ColumnDefinition Width="auto"></ColumnDefinition>
    <ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>

<GridSplitter Width="5" 
    Margin="0,36,0,5" 
    BorderThickness="4" 
    BorderBrush="Transparent" 
    Grid.Column="1" 
    HorizontalContentAlignment="Center" 
    HorizontalAlignment="Center" 
    ResizeBehavior="PreviousAndNext"></GridSplitter>

【问题讨论】:

  • GridSplitter 在哪里?
  • 在网格内的第 1 行。第0行是上面的代码。

标签: wpf combobox wpf-controls


【解决方案1】:

使用Grid 而不是 StackPanel。这样就可以了。

<Grid>
   <Grid.ColumnDefinitions>
      <ColumnDefinition Width="Auto"/>
      <ColumnDefinition Width="*"/>
   </Grid.ColumnDefinitions>

   <Label ../>
   <ComboBox Grid.Column="1" HorizontalAlignment="Stretch" .../>

</Grid>

【讨论】:

  • @nitefrog:是的,第一个是标签的自动或固定宽度,第二个是 *.
【解决方案2】:

类似这样的:

<Window x:Class="WpfApplication2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>
        <Label Grid.Row="0">Some stuff here</Label>
        <GridSplitter 
            ResizeDirection="Rows"
            Grid.Row="1"
            Height="3"
            HorizontalAlignment="Stretch" />
        <Grid Grid.Row="2">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto" />
                <ColumnDefinition Width="*" />
            </Grid.ColumnDefinitions>
            <Label Content="View By" 
            Padding="5" 
            Height="30" />
            <ComboBox Name="ddSelector" Grid.Column="1"
            HorizontalAlignment="Stretch" 
            VerticalAlignment="Stretch" 
            HorizontalContentAlignment="Stretch" 
            Margin="16,0,0,0" />
        </Grid>
    </Grid>
</Window>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-17
    • 1970-01-01
    • 2013-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多