WPF:重叠控件和网格列宽度的问题

时间:2011-05-11 12:57:27

标签: wpf grid controls

我有一个关于父网格的问题,其中一个控件与tabcontrol重叠。

我需要子网格(在选项卡控件中)根据重叠控件调整其列的大小。 具体地,当重新调整重叠控件时(例如,由于窗口的大小调整),tabcontrol内的子网格需要调整其列的大小,以使tabcontrol网格内的子控件不与重叠tab控件的控件重叠。

我真诚地希望这里有人知道这个问题的解决方案,我已经和它斗争了好几天:)

提前致谢!

祝你好运, REQ

编辑:回复以下评论:

绝对 - 我想我应该拥有,但是看到我/我在工作,我没有方便的代码。但我可以写一个类似XAML的例子。

<Grid Name="parentGrid" >
  <Grid.ColumnDefinitions>
    <ColumnDefinition Width="1*" />
    <ColumnDefinition Width="1*" />
    <ColumnDefinition Width="1*" />
  </Grid.ColumnDefinitions>
  <Grid.RowDefinitions>
    <RowDefinition Height="1*" />
    <RowDefinition Height="1*" />
    <RowDefinition Height="1*" />
  </Grid.RowDefinitions>

  <TabControl Name="tabCtrl" Grid.Column="1" Grid.ColumnSpan="2" Grid.Row="1" Grid.RowSpan="2">
    <TabItem Name="tabItem1">
      <Grid Name="tabCtrlGrid">
        <Grid.ColumnDefinitions>
          <ColumnDefinition Width="1*" /> <!-- This is the column I want to resize according to the overlapping image control below -->
          <ColumnDefinition Width="1*" />
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
          <RowDefinition Height="1*" />
          <RowDefinition Height="1*" />
        </Grid.RowDefinitions>

        <Button Name="someChildControl" Grid.Column="1" Grid.Row="0" />
      </Grid>
    </TabItem>
  </TabControl>

  <Image Name="overlappingImg" Grid.Column="0" Grid.ColumnSpan="2" Grid.Row="0" Grid.RowSpan="2" /> <!-- whenever the screen/window is resized, the parentGrid resizes, and thus resizing this overlapping image. -->
</Grid>

需要发生的是tabCtrlGrid中的第0列需要调整其宽度以适应图像重叠区域的宽度。这样,someChildControl永远不会被图像重叠,无论它如何调整大小。

希望这更加清晰:)

1 个答案:

答案 0 :(得分:2)

这看起来如何?

    <Grid Name="parentGrid" Background="LightGray">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="100" />
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="100" />
        </Grid.ColumnDefinitions>
        <Rectangle HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Fill="Aqua"/>
        <TextBlock Text="Tab controller" HorizontalAlignment="Stretch" VerticalAlignment="Bottom"/>
        <Rectangle Grid.Column="2" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Fill="Aqua"/>
        <TextBlock Text="Up down nav" Grid.Column="2" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
        <Grid Grid.ColumnSpan="2">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto" />
                <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>
            <Rectangle HorizontalAlignment="Left" VerticalAlignment="Top" Width="130" Height="160" Fill="BlanchedAlmond"/>
            <TextBlock Text="CoverArt" HorizontalAlignment="Left" VerticalAlignment="Top" Width="130" Height="160"/>
            <Rectangle Grid.Column="1" Fill="LightGray" />
            <TextBlock Text="Tab content" Grid.Column="1" />
        </Grid>
    </Grid>