我已经敲了几天试图弄清楚为什么我的控件不想调整大小。
例如下面,我在一个可调整大小的窗口中将background.png作为窗口背景。窗口成功重新调整大小,背景根据需要填充整个窗口。但图像不会!两个图像都是.png,它们都是相同的dpi,并且都具有相同的分辨率。
ActuatorUC中的图像应该直接与背景对齐,因为它具有透明部分。
MainWindow.xaml - >
<Window.Background>
<ImageBrush ImageSource="Resources/background.png"></ImageBrush>
</Window.Background>
<Grid Name="mainGrid">
<tc:ActuatorUC x:Name="act1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
</Grid>
ActuatorUC.xaml - &gt;
<Canvas Name="canvas" >
</Canvas>
ActuatorUC.xaml.cs - &gt;
private void LoadImage(string imageName )
{
this.canvas.Children.Clear();
Image image = new Image();
string newImageName = "pack://application:,,,/Resources/" + imageName + ".png";
image.Source = (new ImageSourceConverter()).ConvertFromString(newImageName) as ImageSource;
image.VerticalAlignment = System.Windows.VerticalAlignment.Stretch;
image.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch;
this.canvas.Children.Add(image);
}
动态添加的图片有效,它显示但不会使用父画布调整大小。
我已经完成了大量的搜索,但我无法弄清楚这一点。我很确定这是关于wpf的简单或一些误解。不幸的是,这些图片是专有的,所以我无法将它们添加到这个帖子中。
提前致谢。
答案 0 :(得分:0)
感谢Clemens的评论,我修正了下面的答案。
Window.Xaml - &gt;
<Window.Background>
<ImageBrush ImageSource="Resources/background.png"></ImageBrush>
</Window.Background>
<Grid Name="mainGrid">
<tc:ActuatorUC x:Name="act1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
</Grid>
ActuatorUC.Xaml - &gt;
<Grid Name="grid" >
</Grid>
ActuatorUc.Xaml.cs - &gt;
private void LoadImage(string imageName )
{
this.canvas.Children.Clear();
Image image = new Image();
string newImageName = "pack://application:,,,/Resources/" + imageName + ".png";
image.Stretch = Stretch.Fill;
image.Source = (new ImageSourceConverter()).ConvertFromString(newImageName) as ImageSource;
this.canvas.Children.Add(image);
}