Размер комбинированного списка WPF при перетаскивании GridSplitter - PullRequest
1 голос
/ 27 мая 2011

Как я могу закрепить поле со списком, чтобы при перетаскивании сплиттера он автоматически изменял размер.

Я попытался использовать стековую панель безрезультатно, и даже установил HorizontalAlignment и HorizontalContentAlignment на растяжение; это не работает.

Мне нужно, чтобы поле со списком было таким же широким, как перетаскиваемый раздел. В не 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>

Ответы [ 2 ]

4 голосов
/ 27 мая 2011

Используйте Сетка вместо StackPanel.Это подойдет.

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

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

</Grid>
2 голосов
/ 27 мая 2011

Примерно так:

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