Xaml IMultiValueConverter矩形转换器返回错误的大小
当我使用以下XAML时:Xaml IMultiValueConverter矩形转换器返回错误的大小,xaml,multibinding,imultivalueconverter,drawingbrush,geometrydrawing,Xaml,Multibinding,Imultivalueconverter,Drawingbrush,Geometrydrawing,当我使用以下XAML时: <Canvas> <Canvas.Background> <DrawingBrush> <DrawingBrush.Drawing> <DrawingGroup> <GeometryDrawing>
<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>
我应该在画布的左上角得到一个小矩形。相反,我在整个画布上画了一个矩形。我做错了什么
另一件奇怪的事:如果我更改newrect中的值,它似乎只是更改组成矩形的线条的宽度,而不是更改矩形的大小……而矩形仍然只是整个画布上的一个大矩形。我想我得到的结果是这样的:
<RectangleGeometry Rect="0,0,100,100"/>
但我真正想要的结果更像:
<Rectangle x:Name="rectNW" Canvas.Top="0" Canvas.Left="0" Height="100" Width="100" Stroke="Red" StrokeThickness="5"/>
您没有设置DrawingBrush的拉伸属性。默认值是Fill。您可能还需要查看其视口和视口框属性。
<Rectangle x:Name="rectNW" Canvas.Top="0" Canvas.Left="0" Height="100" Width="100" Stroke="Red" StrokeThickness="5"/>