如何解决IMultiValueConverter矩形转换器返回错误的大小
当我使用以下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 举报,一经查实,本站将立刻删除。