我正在使用網格來平衡3個部分。前兩個應占剩餘空間的50%,後兩個應保持底部相同的高度,因爲它是一個帶按鈕的酒吧。當另一個設置爲摺疊時,WPF網格元素不會調整大小
我使用GridSplitter來允許動態調整前兩個元素之間的大小,但刪除它也不會改變任何東西。
這裏是一個最小的工作例如:
XAML:
<Window x:Class="TestWPFApplication.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:TestWPFApplication"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid x:Name="rootGrid">
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBox
x:Name="firstBox"
Grid.Row="0"
AcceptsReturn="True"
AcceptsTab="True"
ScrollViewer.HorizontalScrollBarVisibility="Auto"
ScrollViewer.VerticalScrollBarVisibility="Auto"/>
<GridSplitter x:Name="splitter" Grid.Row="1" Height="5" HorizontalAlignment="Stretch" />
<TextBox
x:Name="secondBox"
Grid.Row="2"
AcceptsReturn="True"
AcceptsTab="True"
ScrollViewer.HorizontalScrollBarVisibility="Auto"
ScrollViewer.VerticalScrollBarVisibility="Auto"/>
<Button Grid.Row="3" Content="Collapse" Click="Button_Click"/>
</Grid>
</Window>
CS:
namespace TestWPFApplication
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
splitter.Visibility = Visibility.Collapsed;
secondBox.Visibility = Visibility.Collapsed;
}
}
}
點擊按鈕,第二個文本框和gridsplitter崩潰,所以我不能使用後他們(理想),但其餘的文本框不佔用其餘的空間(不希望的)。
在我的理解中,行有一個高度的星,它應該自動調整它的空間。我是否需要調用像updateUI之類的函數,以便第一個文本框自動調整大小?
雖然這確實有效並且頂盒已調整大小,但這意味着我必須保存該值。我不明白爲什麼我需要DataBinding部分,因爲MWE的內容位於我項目中的TabItem中,我只想提供一種可能性來減少第二個文本框,以便在第一個文本框中具有更多空間。你能解釋爲什麼這是必要的嗎?或者爲什麼它不能按我的預期工作。 – Crumar
如果你願意,你可以在代碼後面寫這個,如果你不想手動設置'MaxHeight',你可以寫'綁定'。我編輯了答案。 – bars222
嗯,我在函數中實現了這個,因爲我需要保存MaxHeight的值來再次顯示文本框。然而,我會等待更多的答案,因爲我認爲這更多的是解決方法。 upvoted雖然 – Crumar