关于wpf应用中资源共享和使用的问题

namaemuzu 2017-09-27 09:24:12
这个问题困扰我好久了 无奈wpf新手 现在为止看的书上也没有讲到这个问题 就是当一个控件使用一个资源时另一个控件使用不了。。。。
这是为什么?求解 如何让两个控件共享一个资源?
下面的部分代码是实际遇到的问题 一个控件使用了image后另一个控件使用同一个image会显示不出来::

Grid grid = new Grid();
Image image = new Image(){Source = new BitmapImage(new Uri(@"F:\MyPicture\MyPic1.jpg"))};
grid.Children.Add(image);
//MainGrid是一个在wpf里定义的grid
MainGrid.Children.Add(grid.Children[0]); //显示不出来图片
//MainGrid.Children.Add(image) 也不行

求大神告知这是为什么
...全文
138 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
namaemuzu 2017-10-11
  • 打赏
  • 举报
回复
唉 读书少 知识少 见笑了
homesos 2017-09-28
  • 打赏
  • 举报
回复
应该是图片文件被占用了吧,先把图片文件加载到MemoryStream中,再通过bitmapImage.StreamSource将stream转换为BitmapImage。就可以重复使用了。
exception92 2017-09-28
  • 打赏
  • 举报
回复
要想再次使用image,必须从它的逻辑父元素中分离,例如: grid.Children.Remove(xxx); 就可以再次使用xxx了。
exception92 2017-09-28
  • 打赏
  • 举报
回复
就是当一个控件使用一个资源时另一个控件使用不了。。。。 -》如果你使用StaticResource 来引用一个style 就不会有问题。 资源是可以共享的,但是你的问题不是资源的问题。 Image image = new Image(){Source = new BitmapImage(new Uri(@"F:\MyPicture\MyPic1.jpg"))}; grid.Children.Add(image); //MainGrid是一个在wpf里定义的grid MainGrid.Children.Add(grid.Children[0]); //显示不出来图片 -》这不叫共享资源,这只是简单的逻辑树节点操作。也就是说 image只能有一个逻辑父节点。 grid.Children.Add(image); -》此时image的父节点为grid,它就不能再直接作为MainGrid的子节点了。 MainGrid.Children.Add(grid.Children[0]); //显示不出来图片 -》如果是MainGrid.Children.Add(grid); 就可以显示出来了。
homesos 2017-09-28
  • 打赏
  • 举报
回复
把Grid背景设置为使用这个Image的ImageBrush

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧