无废话WPF系列3: XAML中为对象属性赋值
2011-02-19 16:36
288 查看
1.使用标签的Attribute为对象属性赋值
我们可以按上面的方式用字符串来赋值,但是比如上面的Fill其实Shape.Fill类型,那为什么我么可以赋Red呢?因为WPF使用TypeConverter进行了转换.
2.使用TypeConverter类将XAML的Attribute与对象的Property进行转换
namespaceDeepXAML
{
[TypeConverter(typeof(StringToPersonConverter))]
publicclassPerson
{
publicstringName{get;set;}
publicPersonChild{get;set;}
}
}
namespaceDeepXAML
{
publicclassStringToPersonConverter:TypeConverter
{
publicoverrideobjectConvertFrom(ITypeDescriptorContextcontext,System.Globalization.CultureInfoculture,objectvalue)
{
if(valueisstring)
{
Personp=newPerson();
p.Name=valueasstring;
returnp;
}
returnbase.ConvertFrom(context,culture,value);
}
}
}
publicpartialclassMainWindow:Window
{
publicMainWindow()
{
InitializeComponent();
}
privatevoidButton_Click(objectsender,RoutedEventArgse)
{
Personp=(Person)this.FindResource("Jack");
MessageBox.Show(p.Child.Name);
}
}
3.标记扩展(MarkupExtensions)
标记扩展是一种特殊的Attribute=value语法,Value是由一对花括号及其括起来的内容组成,XAML编译器会对这样的内容做出解析,生成相应的对象。
<Grid>
<StackPanel>
<Buttonx:Name="btnOk"Width="200"Height="100"Click="Button_Click">OK</Button>
<TextBoxText="{BindingElementName=btnOk,Path=Width,Mode=OneWay}"Width="200"Margin="10"></TextBox>
</StackPanel>
</Grid>
标记扩展是可以嵌套,有一些简写,比如{BindingValue,…}与{BindingPath=Value,…}等价;前者是固定位置参数,后者制定参数名字,位置顺序可以变动;标记扩展类的类名以Extension为后缀,但XAML里可以省略这个后缀。
4.导入程序集和引用命名空间
上面的图片已经可以演示出来。
我们可以按上面的方式用字符串来赋值,但是比如上面的Fill其实Shape.Fill类型,那为什么我么可以赋Red呢?因为WPF使用TypeConverter进行了转换.
2.使用TypeConverter类将XAML的Attribute与对象的Property进行转换
3.标记扩展(MarkupExtensions)
标记扩展是一种特殊的Attribute=value语法,Value是由一对花括号及其括起来的内容组成,XAML编译器会对这样的内容做出解析,生成相应的对象。
<StackPanel>
<Buttonx:Name="btnOk"Width="200"Height="100"Click="Button_Click">OK</Button>
<TextBoxText="{BindingElementName=btnOk,Path=Width,Mode=OneWay}"Width="200"Margin="10"></TextBox>
</StackPanel>
</Grid>
标记扩展是可以嵌套,有一些简写,比如{BindingValue,…}与{BindingPath=Value,…}等价;前者是固定位置参数,后者制定参数名字,位置顺序可以变动;标记扩展类的类名以Extension为后缀,但XAML里可以省略这个后缀。
4.导入程序集和引用命名空间
上面的图片已经可以演示出来。
相关文章推荐
- WPF学习旅程(三)——在XAML中为对象的属性赋值
- WPF 之 XAML语法,对象属性赋值(简单赋值、TypeConverter 标签属性与对象属性映射、标记扩展),引用外部库
- XAML实例教程系列 – 对象和属性
- XAML实例教程系列 – 对象和属性 推荐
- XAML实例教程系列 – 对象和属性
- 无废话WPF系列1:XAML分析
- XAML实例教程系列 - 对象和属性(二)
- [WPF系列]-数据邦定之DataTemplate 根据对象属性切换模板
- Wpf 对象属性赋值---属性标签
- 无废话WPF系列12: 依赖属性和附加属性
- WPF中XMAL对象属性赋值及属性类型转换机制
- XAML属性赋值转换之谜(WPF XAML语法解密)
- Wpf 使用标签扩展为对象的属性赋值。
- XAML实例教程系列 - 对象和属性
- XAML实例教程系列 – 对象和属性
- XAML中为对象属性赋值
- XAML实例教程系列 – 对象和属性
- 创建javaScript自定义对象,并给属性赋值
- WPF依赖属性,绑定通知机制系列补充说明
- 对象转换对同属性进行赋值