问题描述
当我使用以下XAML时:
<Canvas>
<Canvas.Background>
<DrawingBrush>
<DrawingBrush.Drawing>
<DrawingGroup>
<GeometryDrawing>
<GeometryDrawing.Geometry>
<RectangleGeometry>
<RectangleGeometry.Rect>
<MultiBinding Converter="{StaticResource MyRectConverter}">
<Binding Path="ActualWidth" RelativeSource="{RelativeSource AncestorType={x:Type Canvas}}" />
<Binding Path="ActualHeight" RelativeSource="{RelativeSource AncestorType={x:Type Canvas}}" />
<Binding Source="{StaticResource rectNW}" />
</MultiBinding>
</RectangleGeometry.Rect>
</RectangleGeometry>
</GeometryDrawing.Geometry>
<GeometryDrawing.Pen>
<Pen Brush="Yellow" Thickness="2" />
</GeometryDrawing.Pen>
</GeometryDrawing>
</DrawingGroup>
</DrawingBrush.Drawing>
</DrawingBrush>
</Canvas.Background>
</Canvas>
以及以下代码:
Public Class MyRectConverter
Implements IMultiValueConverter
Public Function convert(ByVal values As Object(),ByVal targettype As Type,ByVal parameter As Object,ByVal culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IMultiValueConverter.Convert
Dim w As Double = CDbl(values(0))
Dim h As Double = CDbl(values(1))
Dim s As String = CStr(values(2))
Dim regionSize As Size = New Size(w / 3,h / 3)
Dim ptLocationNW As Point = New Point(0 * w / 3,0 * h / 3)
Dim rectNW As Rect = New Rect(ptLocationNW,regionSize)
Return rectNW
End Function
Public Function convertBack(ByVal value As Object,ByVal targettypes As Type(),ByVal culture As System.Globalization.CultureInfo) As Object() Implements System.Windows.Data.IMultiValueConverter.ConvertBack
Return nothing
End Function
End Class
我应该在画布的左上角得到一个小矩形。相反,我在整个画布上得到一个矩形。我在做什么错了?
另一个奇怪的事情是:如果更改“ New Rect”中的值,似乎只是更改组成矩形的线的宽度,而不是更改矩形的大小...并且矩形仍然只是一个整个画布周围的大矩形。我认为我得到这样的结果:
<RectangleGeometry Rect="0,100,100"/>
但是我真正想要的是这样的结果:
<Rectangle x:Name="rectNW" Canvas.Top="0" Canvas.Left="0" Height="100" Width="100" stroke="Red" strokeThickness="5"/>
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)