C# wpf是否可能有一个可调整大小的水平扩展器?
我是WPF的新手。我在这里找到了如何进行可调整大小的垂直扩展器: 所以我认为做一个水平的会很容易,我尝试了不同的方法,但没有成功 没有复杂的代码可以完成吗在两个网格行之间有一个GlidSpliter,其中一个有扩展器C# wpf是否可能有一个可调整大小的水平扩展器?,c#,wpf,visual-studio-2010,xaml,C#,Wpf,Visual Studio 2010,Xaml,我是WPF的新手。我在这里找到了如何进行可调整大小的垂直扩展器: 所以我认为做一个水平的会很容易,我尝试了不同的方法,但没有成功 没有复杂的代码可以完成吗在两个网格行之间有一个GlidSpliter,其中一个有扩展器 布局如下所示: 左扩展器/网格拆分器工作正常。但底部的expander/gridsplitter没有。不过,它在没有网格拆分器的情况下运行良好 我的XAML: <Grid> <Grid.ColumnDefinitions> <
布局如下所示: 左扩展器/网格拆分器工作正常。但底部的expander/gridsplitter没有。不过,它在没有网格拆分器的情况下运行良好 我的XAML:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="10" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<DockPanel Grid.Row="0">
<Expander ExpandDirection="Left" Header="">
<Expander.Content>
<Grid>
<!-- this works -->
</Grid>
</Expander.Content>
</Expander>
<TextBox AcceptsReturn="True" />
</DockPanel>
<GridSplitter Grid.Row="1" Height="10" HorizontalAlignment="Stretch" ResizeBehavior="PreviousAndCurrent" ResizeDirection="Rows"/>
<DockPanel Grid.Row="2">
<Expander ExpandDirection="Down" Header="Summary">
<Expander.Content>
<TextBox AcceptsReturn="True" />
</Expander.Content>
</Expander>
</DockPanel>
</Grid>
如果删除中间行和gridsplitter,它可以正常工作,但无法调整大小
非常感谢您的帮助。第三排的高度也应该是成比例的。为第一行和底部行指定
MinHeight
,使它们不会完全收缩
编辑的XAML:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="6*" MinHeight="100"/>
<RowDefinition Height="10" />
<RowDefinition Height="*" MinHeight="50"/>
</Grid.RowDefinitions>
<DockPanel Grid.Row="0">
<Expander ExpandDirection="Left" Header="">
<Expander.Content>
<Grid>
<!-- this works -->
</Grid>
</Expander.Content>
</Expander>
<TextBox AcceptsReturn="True" />
</DockPanel>
<GridSplitter Grid.Row="1" Height="2" HorizontalAlignment="Stretch"/>
<DockPanel Grid.Row="2">
<Expander ExpandDirection="Down" Header="Summary">
<Expander.Content>
<TextBox AcceptsReturn="True" />
</Expander.Content>
</Expander>
</DockPanel>
</Grid>
以下内容对我很有用。展开时显示GridSplitter
,折叠时隐藏
我使用椭圆填充示例中的窗格,因为这样很容易看到每个面板占用了多少空间
Xaml
你怎么能指望拆分器影响底部固定高度?@Blam这不是问题所在。可调整大小的水平扩展器(位于底部)。另一个问题尚未解决:@bum我删除了它,因为这不是问题所在。我试过几种方法。我认为扩展器不是为调整大小而设计的。谢谢你的输入。但也许我是在要求一些做不到的事情?扩展器不像垂直扩展器那样工作。
<Grid Background="Green">
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto" Name="expanderRow"/>
</Grid.RowDefinitions>
<Ellipse Grid.Row="0" Fill="Black"></Ellipse>
<Expander Grid.Row="2" ExpandDirection="Up" IsExpanded="False" Background="Yellow"
Expanded="Expander_Expanded"
Collapsed="Expander_Collapsed">
<Ellipse Fill="Red"/>
</Expander>
<GridSplitter Grid.Row="1" Height="15" HorizontalAlignment="Stretch" Name="expander" Visibility="Collapsed"></GridSplitter>
</Grid>
private GridLength expandedHeight = new GridLength(0.5, GridUnitType.Star);
public MainWindow()
{
InitializeComponent();
}
private void Expander_Expanded(object sender, RoutedEventArgs e)
{
expanderRow.Height = expandedHeight;
expander.Visibility = Visibility.Visible;
}
private void Expander_Collapsed(object sender, RoutedEventArgs e)
{
expandedHeight = expanderRow.Height;
expanderRow.Height = GridLength.Auto;
expander.Visibility = Visibility.Collapsed;
}