[英]WPF: hide grid rows with GridSplitter
How can I hide the last two rows after resizing of splitter? 调整分割器大小后如何隐藏最后两行? When last two rows are hidden, the webBrowser should fill all the area.
当最后两行隐藏时,webBrowser应该填充所有区域。
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="5" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<WebBrowser Name="webBrowser" />
<GridSplitter Grid.Row="1" ResizeDirection="Rows"
ResizeBehavior="PreviousAndNext" Width="Auto" Height="5"
HorizontalAlignment="Stretch"
Visibility="...">
</GridSplitter>
<c:MyControl Grid.Row="2" Visibility="..." />
</Grid>
Quick fix of this issue: 快速解决此问题:
public class HideableGridSplitter : GridSplitter
{
private GridLength height;
public HideableGridSplitter()
{
this.IsVisibleChanged += HideableGridSplitter_IsVisibleChanged;
}
void HideableGridSplitter_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
{
Grid parent = base.Parent as Grid;
if (parent == null)
return;
int rowIndex = Grid.GetRow(this);
if (rowIndex + 1 >= parent.RowDefinitions.Count)
return;
var lastRow = parent.RowDefinitions[rowIndex + 1];
if (this.Visibility == Visibility.Visible)
lastRow.Height = height;
else
{
height = lastRow.Height;
lastRow.Height = new GridLength(0);
}
}
}
Make a trigger on MyControl.ActualHeight. 在MyControl.ActualHeight上触发。 If 0, set visibility to collapsed
如果为0,则将可见性设置为已折叠
<DataTrigger Binding="{Binding ElementName=MyControl, Path=ActualHeight}" Value=0>
<Setter Property="Visibility" Value="Collapsed" />
</DataTrigger>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.