C# 网格进食空间中的WPF扩展器
我有非常简单的xamlC# 网格进食空间中的WPF扩展器,c#,wpf,expander,C#,Wpf,Expander,我有非常简单的xaml <Grid Margin="0,50,0,0"> <Grid.ColumnDefinitions> <ColumnDefinition Width="30*" /> <ColumnDefinition Width="Auto"/> </Grid.ColumnDefinitions> <Grid.RowDefini
<Grid Margin="0,50,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="30*" />
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<!--<RowDefinition Height="50"/>-->
</Grid.RowDefinitions>
<Expander Header=""
HorizontalAlignment="Left"
VerticalAlignment="Stretch"
ExpandDirection="Right"
IsExpanded="True"
Grid.Column="0"
Grid.Row="0"
Height="Auto"
>
<!-- My List control -->
</Expander>
<TabControl Name="ExecutionTab" Grid.Column="1" Grid.Row="0" HorizontalAlignment="Stretch">
<!-- soem tabs here -->
</TabControl>
</Grid>
现在,在折叠扩展器后,左侧部分[row=0,col=0]显示为空,带有空格。
我们想要的是右边的部分[row=0,col=1]应该占据整个空间
在这种情况下应该怎么做?
我已尝试将HorizontalAlignment=“Stretch”设置为选项卡控件,但不起作用
我是否需要添加事件处理程序,如折叠和更改网格宽度。。但这似乎不是个好办法
有人能提出更好的办法吗
谢谢使用网格并不是实现目标的最佳方式。您应该使用DockPanel代替LastChildFill=“true”。我现在无法尝试,但我会这样想象:
<DockPanel LastChildFill="true">
<Expander Header=""
HorizontalAlignment="Left"
VerticalAlignment="Stretch"
ExpandDirection="Right"
IsExpanded="True"
DockPanel.Dock="Left"
Height="Auto"
>
<!-- My List control -->
</Expander>
<TabControl Name="ExecutionTab" HorizontalAlignment="Stretch">
<!-- soem tabs here -->
</TabControl>
</DockPanel>
这将使选项卡控件始终占据剩余的全部空间。您必须将
列定义.宽度
设置为自动
,如果您希望为选项卡控件
设置固定宽度,则应将宽度
设置为选项卡控件
<Grid Margin="0,50,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
您可以通过将列定义设置为:
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition/>
</Grid.ColumnDefinitions>
显示此工作的完整代码如下所示:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Expander ExpandDirection="Right" IsExpanded="True">
<TextBlock FontSize="50">Text For Expander</TextBlock>
</Expander>
<TabControl Name="ExecutionTab" Grid.Column="1">
<TabItem Header="Tab 1">
<TextBox FontSize="50" TextWrapping="Wrap">Text for Tab 1</TextBox>
</TabItem>
<TabItem Header="Tab 2">
<TextBox FontSize="50" TextWrapping="Wrap">Text for Tab 1</TextBox>
</TabItem>
</TabControl>
</Grid>
扩展器文本
选项卡1的文本
选项卡1的文本
如果将上面的xaml添加到窗口中,应该会看到以下内容
在上面尝试了ColumnDefinition auto,但之后只显示Expander,折叠时只显示Tabcontrol。如果将上述代码放在大小合理的窗口中,您将首先看到Expander文本和选项卡。标签会很窄。收拢扩展器时,扩展器文本将消失,选项卡将占据整个窗口(除扩展器按钮外)。您是否完全按照上述方式尝试xaml?您看到了什么问题?它的工作原理和我预期的一样,但也许你正在尝试做一些不同的事情。谢谢你的评论。尝试了此操作,但更改后,仅显示Expander,折叠时仅显示Tabcontrol。所以每次只显示expander或tabcontrol。谢谢您的评论。尝试了此操作,但更改后,仅显示Expander,折叠时仅显示Tabcontrol。所以一段时间只显示expander或tabcontrol。我只是在本地尝试了一下,结果成功了。总之,我们可以看到整个页面代码?是的。。这对我有用。问题是xaml再次使用网格。谢谢