画布重叠父边框

时间:2014-05-14 08:41:17

标签: c# wpf xaml

我正在努力解决布局问题。我的usercontrol包含一个边框,画布作为子画面。 此画布包含一个网格,该网格包含2个画布(1列和2行具有不同的颜色)。

我的问题是网格与右侧的边框重叠,我不知道为什么。我试图将我的主画布的ClipToBounds属性设置为“True”,但没有效果。

你能帮助我吗?

问题在于:

Problem

以下是代码:

<Border Name="MainBorder" BorderBrush="Black" BorderThickness="1">
   <Canvas Name="MainCanvas" Height="30" ClipToBounds="True">
      <Grid Width="{Binding ElementName=MainCanvas, Path=ActualWidth}">
          <Grid.RowDefinitions>
              <RowDefinition Height="5" />
              <RowDefinition Height="5" />
          </Grid.RowDefinitions>
          <Grid.ColumnDefinitions>
              <ColumnDefinition />
          </Grid.ColumnDefinitions>

          <Canvas Name="CanvasTop" Grid.Row="1" Grid.Column="0" Background="Beige" />
          <Canvas Name="CanvasBottom" Grid.Row="0" Grid.Column="0" Background="LightGray" />
      </Grid>
   </Canvas>
</Border>

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

我认为这是你的Width =“{Binding ElementName = MainCanvas,Path = ActualWidth}”这一行。

而不是width属性可以尝试Horizo​​ntalAlignment =“Stretch”??这将确保它使用整个宽度

答案 1 :(得分:0)

问题解决了,代码隐藏中的一个函数以错误的方式调整了控件的大小:

public void SetMainCanvasWidth(double size)
{
    Width = Math.Max(2, size); // that line was evil. removed it and it runs
    MainCanvas.Width = Math.Max(2, size);
}

感谢您的帮助。