我正在尝试在 Web 应用程序的运行时生成一些 WPF 元素的图像。我取得了一定程度的成功,但是如果我在 WPF 桌面应用程序中使用相同的代码,尽管运行正常,但存在一个问题,即子元素不会伸展以填充其父元素。这是代码:
Canvas imageCanvas = new Canvas { Width = 1651, Height = 2551, Background = Brushes.White };
Canvas Test = new Canvas();
System.Windows.Shapes.Path Path = new System.Windows.Shapes.Path();
Path.Data = Geometry.Parse("M 0,0 H 287 V 287 H 0 Z");
Path.Stretch = Stretch.Fill;
Path.Stroke = Brushes.Black;
Path.StrokeThickness = 1;
Test.Width = 500;
Test.Height = 500;
Test.Children.Add(Path);
imageCanvas.Children.Add(Test);
Canvas.SetTop(Test, 10);
Canvas.SetLeft(Test, 10);
// Update layout
Size size = new Size(imageCanvas.Width, imageCanvas.Height);
imageCanvas.Measure(size);
imageCanvas.Arrange(new Rect(size));
RenderTargetBitmap bitmapRenderer = new RenderTargetBitmap((int)size.Width, (int)size.Height, 96, 96, PixelFormats.Pbgra32);
bitmapRenderer.Render(imageCanvas);
我期望看到的是填充它的父画布的正方形,但这不会发生。实际上,父级的大小似乎完全被忽略了,路径始终相同。我能做些什么来强制调整大小吗?我认为最上面的画布上的 measure 和安排调用可以做到这一点,但显然不是。:(