[英]Gridsplitter behaviour when hiding a WPF grid column
我對WPF很新,所以請原諒我,如果這是“老帽子”這些天......已經在網上/論壇上搜索過,並且找不到我需要的答案:
我有一個包含5列的WPF網格 - 三個用於數據,兩個用於網格分割器,這(感謝此網站上的信息!)似乎可以正常工作並調整大小。 但是 - 我需要能夠顯示/隱藏中間列。 我可以這樣做,但是當我隱藏中間列時,左手網格探測器仍會影響“隱藏”列 - 我需要有效地在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) Handles butHide.Click If butHide.Content = "hide" Then butHide.Content = "show" Col2.Width = New GridLength(0) Border2.Visibility = System.Windows.Visibility.Collapsed GridSplitter2.Visibility = System.Windows.Visibility.Collapsed Else() butHide.Content = "hide" Col2.Width = New GridLength(1, GridUnitType.Star) Border2.Visibility = System.Windows.Visibility.Visible GridSplitter2.Visibility = System.Windows.Visibility.Visible End If End Sub
也許你在這里最容易的事情就是設置Grid.ZIndex="2"
為Border1
,然后切換ColumnSpan
Click事件1和3之間。
<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);
}
}
另一種解決方案是將網格分割器放在要在其內容后面調整大小的同一列中,並為內容設置邊距。 請參閱此鏈接以獲取參考解決方案: 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.