WPF 依赖属性 类型初始值设定项引发异常

plcly1 2016-05-04 09:44:15
 public class Person:DependencyObject
{
public string FirstName
{
get { return (string)GetValue(FirstNameProperty); }
set { SetValue(FirstNameProperty, value); }
}

// Using a DependencyProperty as the backing store for FirstName. This enables animation, styling, binding, etc...
public static readonly DependencyProperty FirstNameProperty =
DependencyProperty.Register("FirstName", typeof(string), typeof(Person), new PropertyMetadata(0));
}


然后在WPF里加了个按钮
private void Button_Click(object sender, RoutedEventArgs e)
{
Person p = new Person();
}

实例化就出错了


为什么????
...全文
514 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
songbing774933 2016-05-04
  • 打赏
  • 举报
回复
引用 4 楼 plcly1 的回复:
[quote=引用 3 楼 songbing774933 的回复:]
类型初始值设定异常,一般都是类里面的静态变量初始化失败了
就像你Person类的这个静态变量FirstNameProperty就初始化失败了,因为你用0作为string类型变量的默认值了。

定义依赖属性的时候,如要要传PropertyMetadata,推荐写法:new PropertyMetadata(default(string))

string取决于你的依赖属性的类型

多谢propdp的时候原来还有一个项,默认是int的,没注意[/quote]

其实,如果没有特殊的默认值的话,PropertyMetadata这个参数可以不要的,默认的就是default(依赖属性类型)
plcly1 2016-05-04
  • 打赏
  • 举报
回复
引用 3 楼 songbing774933 的回复:
类型初始值设定异常,一般都是类里面的静态变量初始化失败了 就像你Person类的这个静态变量FirstNameProperty就初始化失败了,因为你用0作为string类型变量的默认值了。 定义依赖属性的时候,如要要传PropertyMetadata,推荐写法:new PropertyMetadata(default(string)) string取决于你的依赖属性的类型
多谢propdp的时候原来还有一个项,默认是int的,没注意
songbing774933 2016-05-04
  • 打赏
  • 举报
回复
类型初始值设定异常,一般都是类里面的静态变量初始化失败了
就像你Person类的这个静态变量FirstNameProperty就初始化失败了,因为你用0作为string类型变量的默认值了。

定义依赖属性的时候,如要要传PropertyMetadata,推荐写法:new PropertyMetadata(default(string))

string取决于你的依赖属性的类型
songbing774933 2016-05-04
  • 打赏
  • 举报
回复
哦哦,有代码啊...



public static readonly DependencyProperty FirstNameProperty =
DependencyProperty.Register("FirstName" , typeof(string) , typeof(Person) , new PropertyMetadata(0));

修改成

public static readonly DependencyProperty FirstNameProperty =
DependencyProperty.Register("FirstName" , typeof(string) , typeof(Person) , new PropertyMetadata(""));
songbing774933 2016-05-04
  • 打赏
  • 举报
回复
检查Person 类中的初始化变量,尤其是静态变量的初始化

或者你贴下Person 类的代码

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧