首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GridSplitter -无限宽度

GridSplitter -无限宽度
EN

Stack Overflow用户
提问于 2013-05-30 03:04:25
回答 3查看 897关注 0票数 4

Simple GridSplitter的行为很奇怪,当我将它向左移到MinWidth之外时,另一列会无限扩展。这里我漏掉了什么?

代码语言:javascript
复制
<Grid>
    <Grid x:Name="holdergrid" HorizontalAlignment="Stretch">           
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width ="*" MinWidth="300"/>                
            <ColumnDefinition Width ="425"  MinWidth="300"/>
        </Grid.ColumnDefinitions>
        <Button Grid.Column="0" Content="Left"></Button>
        <Button Grid.Column="1" Content="Right"></Button>
        <GridSplitter Name="GridSplitterFolders" HorizontalAlignment="Left" Grid.Column ="1" Width ="10" ResizeBehavior="PreviousAndCurrent" />
    </Grid>
</Grid>
EN

回答 3

Stack Overflow用户

发布于 2013-05-30 03:55:37

添加一个宽度设置为Auto的columnDefinition以容纳GridSplitter本身,并将ResizeBehavior更改为PreviousAndNext。

代码语言:javascript
复制
<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width ="*" MinWidth="300"/>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width ="425"  MinWidth="300"/>
    </Grid.ColumnDefinitions>
    <Label Content="Left" Grid.Column="0" />
    <GridSplitter HorizontalAlignment="Right" 
              VerticalAlignment="Stretch" 
              Grid.Column="1" ResizeBehavior="PreviousAndNext"
              Width="5" Background="#FFBCBCBC"/>
    <Label Content="Right" Grid.Column="2" />
</Grid>
票数 1
EN

Stack Overflow用户

发布于 2013-06-28 18:53:33

feO2x是对的。当GridSplitter具有混合的*和像素值时,出现无限宽度。

正确工作的水平GridSplitter示例应具有:

代码语言:javascript
复制
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="3*" MinWidth="200"/>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="1*" MinWidth="200"/>
    </Grid.ColumnDefinitions>

代码语言:javascript
复制
<GridSplitter Grid.Column="1" Width="6" Style="{StaticResource gridSplitterStyleVertical}"
                HorizontalAlignment="Center"
                VerticalAlignment="Stretch"
                ResizeBehavior="PreviousAndNext"
                ResizeDirection="Columns">

通知

代码语言:javascript
复制
HorizontalAlignment="Center"

为了让它正常工作,这一点也很重要

票数 1
EN

Stack Overflow用户

发布于 2013-05-30 04:02:47

在我看来,这是一个错误,当至少有一个列定义被设置为像素值时就会发生。如果您将列定义更改为星型值,那么一切都很好。看看你的代码的这个修改版本:

代码语言:javascript
复制
<Window x:Class="Gridsplitter.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition></RowDefinition>
            <RowDefinition Height="Auto"></RowDefinition>
        </Grid.RowDefinitions>
        <Grid x:Name="Holdergrid" MaxWidth="{Binding RelativeSource={RelativeSource AncestorType=Window}, Path=ActualWidth}">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*" MinWidth="300" />
                <ColumnDefinition Width="Auto" />
                <ColumnDefinition Width="400" MinWidth="300" />
            </Grid.ColumnDefinitions>
            <Button Grid.Column="0" Content="{Binding RelativeSource={RelativeSource Self}, Path=ActualWidth}"></Button>
            <Button Grid.Column="2" Content="{Binding RelativeSource={RelativeSource Self}, Path=ActualWidth}"></Button>
            <GridSplitter Name="GridSplitterFolders" HorizontalAlignment="Center" VerticalAlignment="Stretch" Grid.Column ="1" Width ="5" ResizeBehavior="PreviousAndNext"/>
        </Grid>
        <StackPanel Grid.Row="1" Orientation="Horizontal">
            <TextBlock  Text="{Binding ElementName=Holdergrid, Path=ActualWidth, StringFormat=Actual Width: {0}}"></TextBlock>
            <TextBlock Text="{Binding ElementName=Holdergrid, Path=Width, StringFormat=Width: {0}}" Margin="10 0 0 0"></TextBlock>
            <TextBlock Text="{Binding ElementName=Holdergrid, Path=MaxWidth, StringFormat=Max Width: {0}}" Margin="10 0 0 0"></TextBlock>
        </StackPanel>
    </Grid>
</Window>

当您将网格拆分器拖到左侧时,右侧的列将无限增长,甚至超过我限制的MaxWidth。如果将第三列定义中的Width="400"替换为Width="*",则它将正常工作。显然,这是让它工作的唯一方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16821911

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档