首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >带有三列的WPF - GridSplitter

带有三列的WPF - GridSplitter
EN

Stack Overflow用户
提问于 2009-12-13 06:39:17
回答 2查看 24.4K关注 0票数 15

为了让拆分器位于第二列和第三列之间,我为拆分器创建了一列。

当我调整大小时,其他列也会收缩。我认为这是因为我将它们设置为相对大小。但我不知道该怎么解决它。

下面是我的问题的XAML Pad Ready示例。将这个插入到XAML pad中,然后尝试调整最后一列的大小以使其更小。

代码语言:javascript
复制
<Page
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="1*" />
            <ColumnDefinition Width="1*" />
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition Width="1*" />
        </Grid.ColumnDefinitions>
        <StackPanel Background="#feca00" Grid.Column="0">
            <TextBlock FontSize="35" Foreground="#58290A"
                   TextWrapping="Wrap">Left Hand Side</TextBlock>
        </StackPanel>
        <GridSplitter Width="10" />
        <Border CornerRadius="10" BorderBrush="#58290A"
              BorderThickness="5" Grid.Column="1">
            <TextBlock FontSize="25" Margin="20" Foreground="#FECA00"
                   TextWrapping="Wrap">Right Hand Side</TextBlock>
        </Border>
        <GridSplitter Grid.Column="2" HorizontalAlignment="Right"  VerticalAlignment="Stretch" Width="5"></GridSplitter>
        <TabControl Grid.Column="3" Name="tabControl1">
            <TabItem Header="Add Links" Name="tabAddLinks">
                <Grid></Grid>
            </TabItem>
        </TabControl>
    </Grid>
</Page> 

谢谢你的帮助!

编辑:有人建议将两个拆分器都放在各自的列中,这可能会修复它。我试过了,现在第一个拆分器也像第二个拆分器一样缩小列。

代码语言:javascript
复制
<Page
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="1*" />
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition Width="1*" />
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition Width="1*" />
        </Grid.ColumnDefinitions>
        <StackPanel Background="#feca00" Grid.Column="0">
            <TextBlock FontSize="35" Foreground="#58290A"
                   TextWrapping="Wrap">Left Hand Side</TextBlock>
        </StackPanel>
        <GridSplitter Grid.Column="1" HorizontalAlignment="Right"  VerticalAlignment="Stretch" Width="5"></GridSplitter>
        <Border CornerRadius="10" BorderBrush="#58290A"
              BorderThickness="5" Grid.Column="2">
            <TextBlock FontSize="25" Margin="20" Foreground="#FECA00"
                   TextWrapping="Wrap">Right Hand Side</TextBlock>
        </Border>
        <GridSplitter Grid.Column="3" HorizontalAlignment="Right"  VerticalAlignment="Stretch" Width="5"></GridSplitter>
        <TabControl Grid.Column="4" Name="tabControl1">
            <TabItem Header="Add Links" Name="tabAddLinks">
                <Grid></Grid>
            </TabItem>
        </TabControl>
    </Grid>
</Page> 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-12-13 07:12:05

尝试为两个拆分器设置HorizontalAlignment="Center" -不知道为什么将其设置为“正确”会导致行为变得如此古怪,但更改它对我来说很有效:)

票数 52
EN

Stack Overflow用户

发布于 2009-12-13 06:43:17

GridSplitter应该放在网格中它自己的列中。我不确定我是否完全理解您的问题,但我建议您尝试使用5 ColumnDefinitions创建网格。使用第1列和第2列放置GridSplitters,使用第0、2和4列放置内容。

GridSplitter MSDN doc有一个关于如何做到这一点的示例。

代码语言:javascript
复制
<Grid.ColumnDefinitions>
  <ColumnDefinition/>
  <ColumnDefinition Width="Auto" />
  <ColumnDefinition/>
</Grid.ColumnDefinitions>
...
<GridSplitter Grid.Column="1"
          HorizontalAlignment="Center"
          VerticalAlignment="Stretch"
          Background="Black" 
          ShowsPreview="True"
          Width="5"
          />
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1894937

复制
相关文章

相似问题

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