为普通Object添加相似AttachedProperty的属性ide
周银辉ui
咱们知道,在WPF中对应一个DependencyObject,咱们很容易经过AttachedProperty来为类型附加一个属性。但对于普通的Object而言,这就不可行了。spa
我如今遇到这样一个问题,下面有一个继承与Object(而不是DependencyObject)的普通类:code
public class People { public string Name { get; set; } public People(string name) { Name = name; } public override string ToString() { return Name; } } }
我须要它在某些状况下具备IsKeyPerson这个属性,当这个属性为true时,界面会将名称标记为红色。但我没有办法去修改这个People的实现。若是它是DependencyObject就行了,惋惜他不是。blog
个人展现这个People类的界面大概会写成这个样子:继承
<DataTemplate DataType="customAttachedProperty:People"> <TextBlock x:Name="TextBlock" Text="{Binding Name}"/> <DataTemplate.Triggers> <DataTrigger 若是IsKeyPerson为true> <Setter TargetName="TextBlock" Property="Foreground" Value="Red"/> </DataTrigger> </DataTemplate.Triggers> </DataTemplate>
具体如何实现的,下载代码:http://files.cnblogs.com/zhouyinhui/CustomAttachedPropertySln.rarget