小黑黑

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

今天遇到一个问题,需要用.cs代码设置Grid的背景,上网一搜,都是讲怎么用XAML设置的,没意思。没办法了,只好自己查MSDN文档解决了……结果官方的文档上貌似也没有提到怎么用后置代码设置Grid的背景,郁闷了,只好慢慢摸索了。因为之前看到有说XAML代码本质上还是转为.cs文件来执行的,心里一喜,赶紧找来对应的.g.i.cs和.g.cs文件(在obj/Debug文件夹下),结果还是让我失望了,没有发现什么有价值的信息。怎么办呢?慢慢的顺藤摸瓜吧,Panel的Background属性是Brush类型的,而Brush是抽象类型的,显然得用它的子类来初始化一个Brush对象了,因为我想设置Grid的背景为一个图片,所以我找到了Brush的ImageBrush子类,而创建一个ImageBrush类对象的以后,需要设置它的ImageSource属性,它是ImageSource类型的。再一查ImageSource又是一个抽象类,而且是继承于DependencyObject的。到这里有点没主意了……没办法了,再次求助于MSDN。一个F1按下以后,我来到了ImageSource的帮助文档(http://msdn.microsoft.com/en-us/library/ms619185(v=VS.95).aspx),仔细研读后,终于发现了一些线索!“This is an abstract type that is used in the signatures for SourceSource, and ImageSource. For information on the practical derived class that is used for Silverlight 4 image sources, see BitmapImage.”当我看到BitmapImage的时候我眼前一亮,难道可以用它来初始化ImageSource?试试吧。然后,你懂的,成功了,非常开心。

下面是一个小示例:

         如想设置一个Grid的背景图片,可以这么写:

grid.Background = new ImageBrush { ImageSource = new BitmapImage(new Uri("/Images/test.jpg", UriKind.Relative)) };

posted on 2011-04-25 22:30  小黑黑  阅读(648)  评论(1编辑  收藏  举报