C# 重角度引用画布宽度超过画布宽度

C# 重角度引用画布宽度超过画布宽度,c#,xaml,canvas,C#,Xaml,Canvas,我试图在画布宽度圆角内绘制一个复角,当我给这个硬编码的画布与画布大小相同时,它会完美地显示出来 但是,当我使用这些线参考父对象的宽度和高度时: Height="{Binding ElementName=MyDesigner, Path=ActualHeight}" Width="{Binding ElementName=MyDesigner, Path=ActualWidth}" 右侧和底部将超出画布,我附上了行为的图片 谁能告诉我这里出了什么问题 编辑 画布xaml是: <s:De

我试图在画布宽度圆角内绘制一个复角,当我给这个硬编码的画布与画布大小相同时,它会完美地显示出来

但是,当我使用这些线参考父对象的宽度和高度时:

Height="{Binding ElementName=MyDesigner, Path=ActualHeight}"
Width="{Binding ElementName=MyDesigner, Path=ActualWidth}" 
右侧和底部将超出画布,我附上了行为的图片

谁能告诉我这里出了什么问题

编辑

画布xaml是:

<s:DesignerCanvas Focusable="true" x:Name="MyDesigner"
                        Background="{StaticResource WindowBackgroundBrush}"
                        FocusVisualStyle="{x:Null}"
                        ContextMenu="{StaticResource DesignerCanvasContextMenu}"
                              Width="300" Height="300">
                <Rectangle
                        Height="{Binding ElementName=MyDesigner, Path=ActualHeight}"
                        Width="{Binding ElementName=MyDesigner, Path=ActualWidth}" 
                        Fill="Transparent"
                        Stroke="Black" StrokeThickness="4"
                        RadiusX="20" RadiusY="20"
                        Canvas.Left="0"
                        Canvas.Top="0"/>
                <Thumb Name="myThumb" Canvas.Bottom="0" Canvas.Right="0" Background="Blue" 
                  Width="10" Height="10" DragDelta="onDragDelta" 
                  DragStarted="onDragStarted" DragCompleted="onDragCompleted"/>
            </s:DesignerCanvas>

不同之处在于,当我将重角的宽度和高度更改为300时,它非常适合


DesignerCanvas是一个继承canvas的类,几乎没有额外的功能。

我假设矩形最初是绘制的(更大),然后调整大小以适应
画布(在整个应用程序调整大小以适应设计后,该矩形变小或变小)。但是
Canvas
永远不会为您自动调整其子对象的大小(重新绘制),这意味着更改后的形状不会显示或重新绘制。当添加到画布的子对象时,它将始终精确地显示图形的外观

如果要自动调整大小,应选择
网格
堆栈面板
作为主体,而不是
画布
,并将矩形的尺寸设置为
自动
,或将其
拉伸
属性设置为“填充”。网格将自动失效,然后重新绘制所有内容

检查的备注。这里有解释


或者将
Canvas.Children
绑定到矩形集合。然后,每当引发
Canvas.SizeChanged
事件时,您会将矩形尺寸更新为
ActualHeight
ActualWidth
,或者手动从
Canvas.Children
集合中删除旧矩形,然后再次添加调整大小的矩形。

能否显示剩余的XAML代码,或者更好的两种变体?为什么不使用
Border
?至于你的问题——我的猜测是:你的矩形有某种偏移(由于边距、填充或左上角的位置)。你应该发布你的xaml。我已经编辑了我的帖子并添加了xaml,我不使用边框,因为稍后我想向重角添加装饰器,并为重角内的元素绘制线条。谢谢你的解释。我已经为画布调整了大小,在右下角有一个小点。我现在添加了重新调整角的大小,效果很好。