咨询一个WPF的三列布局有关问题
咨询一个WPF的三列布局问题
现在有两个Canvas, 一个Expander, 在三列上.

第一个图: Canvas A, Canvas B 和Expander都是展开的情况.
第二个图: Canvas A, Canvas B 平均分配屏幕空间, Expander收起来了.
第三个图: Canvas A不变, Canvas B的 Visibility变成了Collapse了的情况.
第四个图: Canvas A不变, Canvas B的 Visibility变成了Collapse, Expander收起来了.
求这个布局及交互的思路, 如果单纯通过布局实现不了, 简单的代码也可以.
我尝试过使用Grid三列, 列宽Auto., 可是Canvas 总是穿越过 Expander, 无论是Expander是展开的状态还是收缩的状态.
非常感谢.
------解决思路----------------------
Canvas 设置固定的宽高了? 不要设置固定的宽高,让它的水平与垂直 设置为拉伸。试试
------解决思路----------------------
这样行不?
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*">
<ColumnDefinition Width="*">
<ColumnDefinition Width="Auto">
</Grid.ColumnDefinitions>
<Canvas Grid.Column="0" ... />
<Canvas Grid.Column="1" ... />
<Expander Grid.Column="2" ... />
</Grid>
------解决思路----------------------


现在有两个Canvas, 一个Expander, 在三列上.
第一个图: Canvas A, Canvas B 和Expander都是展开的情况.
第二个图: Canvas A, Canvas B 平均分配屏幕空间, Expander收起来了.
第三个图: Canvas A不变, Canvas B的 Visibility变成了Collapse了的情况.
第四个图: Canvas A不变, Canvas B的 Visibility变成了Collapse, Expander收起来了.
求这个布局及交互的思路, 如果单纯通过布局实现不了, 简单的代码也可以.
我尝试过使用Grid三列, 列宽Auto., 可是Canvas 总是穿越过 Expander, 无论是Expander是展开的状态还是收缩的状态.
非常感谢.
------解决思路----------------------
Canvas 设置固定的宽高了? 不要设置固定的宽高,让它的水平与垂直 设置为拉伸。试试
------解决思路----------------------
这样行不?
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*">
<ColumnDefinition Width="*">
<ColumnDefinition Width="Auto">
</Grid.ColumnDefinitions>
<Canvas Grid.Column="0" ... />
<Canvas Grid.Column="1" ... />
<Expander Grid.Column="2" ... />
</Grid>
------解决思路----------------------
<Grid>
<DockPanel LastChildFill="True">
<Expander Name="myExpander"
Background="Tan"
HorizontalAlignment="Right"
Header="My Expander"
ExpandDirection="Left"
IsExpanded="False"
DockPanel.Dock="Right">
<TextBlock TextWrapping="Wrap">
Lorem ipsum dolor sit amet, consectetur
adipisicing elit, sed do eiusmod tempor incididunt ut
labore et dolore magna aliqua
</TextBlock>
</Expander>
<Grid DockPanel.Dock="Left">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid Grid.Column="0"
Background="Red"></Grid>
<Grid Grid.Column="1"
Background="Blue"></Grid>
</Grid>
</DockPanel>
</Grid>