WPF多个GridSplitters和一个"星形宽度"柱

时间:2016-04-25 13:25:33

标签: wpf xaml

我有这个简单的XAML

<Grid x:Name="LayoutRoot" Background="White" HorizontalAlignment="Stretch">
    <Grid.RowDefinitions>
        <RowDefinition Height="100"/>
        <RowDefinition Height="100"/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="Auto"/>
    </Grid.ColumnDefinitions>

    <Rectangle Grid.Column="0" Fill="LightCoral" MinWidth="100"/>
    <Rectangle Grid.Column="1" Fill="LightBlue" MinWidth="100"/>
    <Rectangle Grid.Column="2" Fill="LightCoral" MinWidth="100"/>
    <Rectangle Grid.Column="3" Fill="Gray" MinWidth="100"/>
    <Rectangle Grid.Column="4" Fill="LightCoral" MinWidth="100"/>

    <GridSplitter Grid.Column="0" Grid.RowSpan="2" Width="10" HorizontalAlignment="Right" VerticalAlignment="Stretch"/>
    <GridSplitter Grid.Column="1" Grid.RowSpan="2" Width="10" HorizontalAlignment="Right" VerticalAlignment="Stretch"/>
    <GridSplitter Grid.Column="2" Grid.RowSpan="2" Width="10" HorizontalAlignment="Right" VerticalAlignment="Stretch"/>
    <GridSplitter Grid.Column="3" Grid.RowSpan="2" Width="10" HorizontalAlignment="Right" VerticalAlignment="Stretch"/>
    <GridSplitter Grid.Column="4" Grid.RowSpan="2" Width="10" HorizontalAlignment="Right" VerticalAlignment="Stretch"/>

</Grid>

这个很好用,但我想要第二列(一个包含LightBlue矩形) - 填充所有可用宽度。如果我设置第二列ColumnDefinition.Width =&#34; *&#34; - 然后GridSplitters到它的右侧,让我们说灰色矩形的GridSplitter - 它开始表现得非常奇怪而且不是我想要的。是否可以使GridSplitters在DataGrid的列标题中表现得像?

1 个答案:

答案 0 :(得分:1)

GridSplitter控件

创建单独的列
<Grid x:Name="LayoutRoot" Background="White">
    <Grid.RowDefinitions>
        <RowDefinition Height="100"/>
        <RowDefinition Height="100"/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="3*"/>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>

    <Rectangle Grid.Column="0" Fill="LightCoral" MinWidth="100"/>
    <Rectangle Grid.Column="2" Fill="LightBlue"/>
    <Rectangle Grid.Column="4" Fill="LightCoral" MinWidth="100"/>
    <Rectangle Grid.Column="6" Fill="Gray" MinWidth="100"/>
    <Rectangle Grid.Column="8" Fill="LightCoral" MinWidth="100"/>

    <GridSplitter Grid.Column="1" Grid.RowSpan="2" 
                  Width="10" HorizontalAlignment="Right" VerticalAlignment="Stretch"
                  ResizeDirection="Columns" ResizeBehavior="PreviousAndNext"/>
    <GridSplitter Grid.Column="3" Grid.RowSpan="2" 
                  Width="10" HorizontalAlignment="Right" VerticalAlignment="Stretch"
                  ResizeDirection="Columns" ResizeBehavior="PreviousAndNext"/>
    <GridSplitter Grid.Column="5" Grid.RowSpan="2" 
                  Width="10" HorizontalAlignment="Right" VerticalAlignment="Stretch"
                  ResizeDirection="Columns" ResizeBehavior="PreviousAndNext"/>
    <GridSplitter Grid.Column="7" Grid.RowSpan="2" 
                  Width="10" HorizontalAlignment="Right" VerticalAlignment="Stretch"
                  ResizeDirection="Columns" ResizeBehavior="PreviousAndNext"/>

</Grid>