1)后台代码中添加新的类:
public class Human
{
public string Name { get; set; }
public Human Child { get; set; }
}
2)前台代码中引入类定义的命名空间:
xmlns:local="clr-namespace:HappyWPF"
3)自定义类资源声明:
<Window.Resources>
<local:Human x:Key="human" Name="Tim" />
</Window.Resources>
4)添加的Button事件:
<Grid>
<Button Content="Show" Width="120" Height="30" Click="Button_Click"/>
</Grid>
5)Click事件的实现
private void Button_Click(object sender, RoutedEventArgs e)
{
Human h = this.FindResource("human") as Human;//FindResource(“”)
if (h != null)
{
MessageBox.Show(h.Name);
}
}
问题:显示Human中的Child 的Name;
要实现此种方式:
1)需要重写TypeConverter类中ConvertFrom()(需要添加应用:using System.ComponentModel;)
public class NameToHumanTypeConverter : TypeConverter
{
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
{
string name = value.ToString();
Human child = new Human();
child.Name = name;
return child;
}
}
2)Human类加特性
[TypeConverterAttribute(typeof(NameToHumanTypeConverter))]
public class Human
{
public string Name { get; set; }
public Human Child { get; set; }
}
完整代码:https://download.csdn.net/download/qq_43026206/12473320