我在 Grid
中有一个 Expander
。
有没有一种简单的方法可以让扩展器使用可用空间(可能是网格中的一整行)?
这是我正在尝试做的示例:
<Window x:Class="WpfExpanderSample.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="200" Width="400">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="2*" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="11111" />
<TextBlock Grid.Column="1" Text="22222" />
<TextBlock Grid.Column="2" Text="33333" />
<TextBlock Grid.Column="3" Text="44444" />
<TextBlock Grid.Column="4" Text="55555" />
<Expander Grid.Column="5" Header="Expand me" ExpandDirection="Down" FlowDirection="RightToLeft" >
<TextBlock Grid.Row="1" Text="Expanded text which is eventually very long and shall take all space available" />
</Expander>
</Grid>
</Window>
现在我希望扩展区域“占据”网格中的整行。 它似乎只占用该 GridCell 中的剩余空间。 扩展后的内容可以显示在其他地方吗?
我必须制作一个额外的按钮才能实现我想要的吗? (为扩展区域设置一些可见属性或类似的东西)?
最佳答案
我想说,完成您所要求的操作的最简单方法是不使用 Expander
。您可以将 Grid
放在顶部,并在右侧放置一些 ToggleButton
,并控制下面的 Visibility
将取决于 ToggleButton.IsChecked
<StackPanel>
<StackPanel.Resources>
<BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>
</StackPanel.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBox Text="0" Grid.Column="0"/>
<TextBox Text="1" Grid.Column="1"/>
<TextBox Text="2" Grid.Column="2"/>
<TextBox Text="3" Grid.Column="3"/>
<ToggleButton Content="V" Grid.Column="4" x:Name="btnExpander"/>
</Grid>
<Grid Visibility="{Binding ElementName=btnExpander, Path=IsChecked, Converter={StaticResource BooleanToVisibilityConverter}}">
<TextBlock Text="LongText"/>
</Grid>
</StackPanel>
当然ToggleButton
需要一些像样的Template
,但这只是给你一个例子
关于c# - 在Grid中使用Expander,扩展区域使用所有空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16778671/