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,我不使用边框,因为稍后我想向重角添加装饰器,并为重角内的元素绘制线条。谢谢你的解释。我已经为画布调整了大小,在右下角有一个小点。我现在添加了重新调整角的大小,效果很好。