我正在尝试动态地将控件添加到窗口上的包装面板但是在将两个包装面板控件添加到原始包装面板控件之后它不再添加这里是用于添加图像的代码
Random rn = new Random();
ImageContainer.Children.Add(displayimage(rn.Next(amount)));
ImageContainer.InvalidateVisual();
我是wpf的新手,只是想知道我是做错了什么或错过了什么 .
任何帮助将不胜感激
EDIT
public WrapPanel displayimage(int i)
{
WrapPanel pn = new WrapPanel();
pn.Width = 350;
pn.Height = 400;
pn.Background = new SolidColorBrush(Colors.White);
BitmapImage bm = new BitmapImage(new Uri(imagePaths[i]));
Image im = new Image();
im.Source = bm;
im.Height = 300;
im.Width = 400;
im.Margin = new Thickness(25,25,25,25);
pn.Children.Add(im);
pn.Margin = Location(pn);
pn.ClipToBounds = true;
return pn;
}
1 回答
为了将图像放在容器控件中的随机位置,您不应使用WrapPanel,而应使用Canvas . 画布用于元素的绝对定位 . 您可以通过设置
Canvas.Left
和Canvas.Top
属性(或Canvas.Right
或Canvas.Bottom
)来设置“画布”子元素的位置 .此外,您不需要任何"inner"面板,因为
Image
是一个可以直接添加到任何容器的控件 .所以改变你的
displayimage
方法如下:现在将这些图像添加到画布:
InvalidateVisual
不是必需的 .您可能还需要注意不要多次添加图像,因为
Random.Next
可能会多次返回相同的数字 .