我正在努力解决布局问题。我的usercontrol包含一个边框,画布作为子画面。 此画布包含一个网格,该网格包含2个画布(1列和2行具有不同的颜色)。
我的问题是网格与右侧的边框重叠,我不知道为什么。我试图将我的主画布的ClipToBounds属性设置为“True”,但没有效果。
你能帮助我吗?
问题在于:
以下是代码:
<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>
感谢您的帮助。
答案 0 :(得分:0)
我认为这是你的Width =“{Binding ElementName = MainCanvas,Path = ActualWidth}”这一行。
而不是width属性可以尝试HorizontalAlignment =“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);
}
感谢您的帮助。