4

私はWPFにかなり慣れていないので、これが最近「古い帽子」である場合は失礼します... Web /フォーラムをトロールし、必要な答えが見つかりませんでした。

5列のWPFグリッドがあります。3つはデータ用、2つはグリッドスプリッター用です。これは(このサイトの情報に感謝します!)正常に機能し、サイズが変更されているようです。ただし、中央の列を表示/非表示にできる必要があります。並べ替えることはできますが、中央の列を非表示にしても、左側のグリッドスプリッターは「非表示」の列に影響を与えます。2列と3列を効果的に切り替える必要があります。これが私の(プロトタイプ)コードです:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Name="Col0" Width="*" />
        <ColumnDefinition Name="Col1" Width="auto" />
        <ColumnDefinition Name="Col2" Width="*" />
        <ColumnDefinition Name="Col3" Width="auto" />
        <ColumnDefinition Name="Col4" Width="auto" />
    </Grid.ColumnDefinitions>
    <GridSplitter Grid.Column="1" Height="100" HorizontalAlignment="Center" Margin="0" Name="GridSplitter1" VerticalAlignment="Stretch" Width="3" />
    <GridSplitter Grid.Column="3" Height="100" HorizontalAlignment="Center" Margin="0" Name="GridSplitter2" VerticalAlignment="Stretch" Width="3" />
    <Border BorderBrush="Silver" BorderThickness="1" Grid.Column="0" HorizontalAlignment="Stretch" Margin="0" Name="Border1" VerticalAlignment="Stretch" Background="#FFC84797" />
    <Border BorderBrush="Silver" BorderThickness="1" Grid.Column="2" HorizontalAlignment="Stretch" Margin="0" Name="Border2" VerticalAlignment="Stretch" Background="Black" />
    <Border BorderBrush="Silver" BorderThickness="1" Grid.Column="4" HorizontalAlignment="Stretch" Margin="0" Name="Border3" VerticalAlignment="Stretch" Background="#FFA60000">
        <Button Content="hide" Height="33" Name="butHide" Width="85" />
    </Border>
</Grid>
Private Sub butHide_Click(ByVal sender As Object、ByVal e As System.Windows.RoutedEventArgs)はbutHide.Clickを処理します

    butHide.Content = "hide" Then

        butHide.Content = "show"
        Col2.Width = New GridLength(0)
        Border2.Visibility = System.Windows.Visibility.Collapsed
        GridSplitter2.Visibility = System.Windows.Visibility.Collapsed

    そうしないと()

        butHide.Content = "hide"
        Col2.Width = New GridLength(1、GridUnitType.Star)
        Border2.Visibility = System.Windows.Visibility.Visible
        GridSplitter2.Visibility = System.Windows.Visibility.Visible

    終了する場合
サブ終了

4

2 に答える 2

6

ここでおそらく最も簡単なのは、クリック イベントで 1 と 3を設定Grid.ZIndex="2"Border1てから切り替えることです。ColumnSpan

<Border Grid.Column="0"
        Grid.ZIndex="2"
        Name="Border1"
        .../>

コードビハインド

private void butHide_Click(object sender, RoutedEventArgs e)
{
    if (butHide.Content.ToString() == "hide")
    {
        butHide.Content = "show";
        Grid.SetColumnSpan(Border1, 3);
    }
    else
    {
        butHide.Content = "hide";
        Grid.SetColumnSpan(Border1, 1);
    }
}
于 2011-08-02T11:19:47.063 に答える
2

もう1つの解決策は、コンテンツの背後でサイズを変更する同じ列にグリッドスプリッターを配置し、コンテンツにマージンを設定することです。参照ソリューションについては、次のリンクを参照してください:http ://www.ehow.com/how_4546867_use-gridsplitter-wpf.html

    <Grid>
     <Grid.RowDefinitions>
      <RowDefinition></RowDefinition>
     </Grid.RowDefinitions>
     <Grid.ColumnDefinitions>
      <ColumnDefinition></ColumnDefinition>
      <ColumnDefinition></ColumnDefinition>
     </Grid.ColumnDefinitions>

     <GridSplitter Grid.Row="0" Grid.Column="0" HorizontalAlignment="Right" Width="4" Background="Yellow"/>
     <TextBlock Grid.Row="0" Grid.Column="0" Margin="0 0 4 0" Background="LightGray">Text Block</TextBlock>
     <TextBlock Grid.Row="0" Grid.Column="1" Background="LightGreen">Text Block 2</TextBlock>
     </Grid>

続きを読む:WPFでGridsplitterを使用する方法| eHow.com http://www.ehow.com/how_4546867_use-gridsplitter-wpf.html#ixzz1mXqi6sGa

于 2012-02-16T11:57:53.490 に答える