咨询一个WPF的三列布局有关问题

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

咨询一个WPF的三列布局有关问题

第一个图: 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  设置固定的宽高了?   不要设置固定的宽高,让它的水平与垂直 设置为拉伸。试试
------解决思路----------------------
引用:
现在有两个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是展开的状态还是收缩的状态.

非常感谢.


这样行不?
<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>

------解决思路----------------------
咨询一个WPF的三列布局有关问题
咨询一个WPF的三列布局有关问题




   <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>