对象元素的子元素
有三类子元素:内容属性、集合项、值(类型转换)
-----------------------------------------------------------------------------
内容属性
元素对象有Content或Items属性的,这就是内容属性,可以包含元素对象或文本。
集合项
两种类型的集合:List、Dictionary
类型转换
普通文本作为元素的子元素。
---------------------------------------------------------------------------
xaml元素必须有默认构造函数
-------------------------------------------------------------------------------------------------
运行时加载和解析XAML
使用代码解析加载XAML文件
XamlReader对象
如果项目根目录有个Win.xaml的文件,用代码解析载入并显示。
Window win = null;
using(FileStream fs = new FileStream ("Win.xaml", FileMode.Open, FileAccess.Read))
{
win = (Window)XamlRead.Load(fs);
win.show();
}
注意事项:FileStream的命名空间System.IO;XamlRead的命名空间System.Windows.Markup;
使用文件流,需要读取物理文件,所以Win.xaml需要调整设置,复制到输出目录:始终复制;生成操作:无。
这些设置在页面的属性设置中。同时要删除页面的后置代码文件。Win.xaml要删除xmlans=class""的设置。+
win.xaml的xmal代码
<Window>
<StackPanel>
<Button>
......
<Button>
.......
......
</Window>
如何找到第二个按钮并给按钮设置文本
win = (Window)XamlRead.Load(fs);
StackPanel sp = (StackPanel)win.Content;
Button btn = sp.Children[1];
btn.Content="找到";
这是根据子集的个数顺序硬编码找对象,有更简单的方法吗?有
----------------------------------------------------------------------------------------
Xaml元素命名
<Window>
<StackPanel>
<Button>
......
<Button X:Name="btn1">
.......
......
</Window>
win = (Window)XamlRead.Load(fs);
Button btn = (Button)win.FindName("btn1");
btn.Content="找到";