wpf后置代码中的Grid布局以及图片路径的设置
之前用Grid练习连连看布局时,遇到了几个困惑。此次就把当时的一些收获写出来,供以后翻看。
图片路径可能比较常用,所以就写在第一个了。
在xaml中,设置图片非常简单,只要把图片拷贝到资源目录(这里假设在\image下),然后再在xaml中写:
<Image x:Name="img" Source="XXX.jpg"></Image>
然而,程序界面上的内容并不是一成不变的,如果我们需要在运行时根据用户的需求改变显示图片该怎么办呢?这就要到后置代码(C#)里改了。
不过,问题来了——在代码里怎么写都会划红线。无法进行类型转换。这就要用到System.Windows.Media.Imaging类了。不过,这里就不必要引用了,因为默认已经引用了。
生成一个BitmapImage对象的实例,其构造函数接受一个Uri对象。
具体代码为:
img.Source = new BitmapImage(new Uri(@"2.jpg",UriKind.Relative));
Uri的第二个参数指定该地址为相对地址(一般不用绝对地址)。
接着是在后置代码中用Grid布局了。
首先,在xaml中添加一个Grid标签,并指定Name属性。
<Grid x:Name="grid_1"></Grid>
说明一下要用Grid将界面分为两行两列
后置代码:
ColumnDefinition cludef = new ColumnDefinition();
grid_1.ColumnDefinitions.Add(cludef);
grid_1.ColumnDefinitions.Add(cludef);
RowDefinition rowdef = new RowDefinition();
grid_1.RowDefinitions.Add(rowdef);
grid_1.RowDefinitions.Add(rowdef);
首先实例化了ColumnDefinition(列),然后grid_1添加了两列(因为只有两列,所以就不写循环了),行类同。
如果你要添加十行十列,就有必要写循环了。
结合上面的图片应用,如果要将图片放在第二行第二列怎么办呢?
这时候就要调用Grid.SetColumn和Grid.SetRow静态方法了。
Grid.SetColumn(img,1);
Grid.SetRow(img,1);
img为上文中Image标签的Name属性。
这里是1而不是2的原因是Grid布局行列是从0开始的。