C# 如何将可为Null的依赖项属性设置为Null?
所以我认为这很简单,但显然将依赖属性设置为null会导致异常C# 如何将可为Null的依赖项属性设置为Null?,c#,dependency-properties,nullable,C#,Dependency Properties,Nullable,所以我认为这很简单,但显然将依赖属性设置为null会导致异常 public int? Value { get => (int?)GetValue(ValueProperty); set {SetValue(ValueProperty, value); } } public static readonly DependencyProperty ValueProperty = DependencyProperty
public int? Value
{
get => (int?)GetValue(ValueProperty);
set {SetValue(ValueProperty, value); }
}
public static readonly DependencyProperty ValueProperty =
DependencyProperty.Register("Value", typeof(object), typeof(MyClass), new PropertyMetadata(default(int?), new PropertyChangedCallback(OnValueChanged)));
当使用上述代码并且使用Value
setter调用Value
ofnull
时,我得到以下异常
System.invalidoOperationException:“可空对象必须有一个值。”
这完全没有道理。如果它是一个可为null的对象
,那么根据定义,我应该能够将其设置为null
所以我的问题是,有没有一种方法可以使依赖属性具有可为null的类型,同时也可以将其设置为null 注册依赖项属性时,应将
typeof(object)
替换为typeof(int?
:
public static readonly DependencyProperty ValueProperty =
DependencyProperty.Register("Value", typeof(int?), typeof(MyClass), new PropertyMetadata(default(int?), new PropertyChangedCallback(OnValueChanged)));
将
int?
属性设置为null
或default(int?
应该可以工作。我无法重现您的问题。请提供更多详细信息。是否有任何地方(绑定或OnValueChanged)您正在使用Value.Value访问您的值?这并不能解决问题。同样的例外,同样的location@AnthonyRussell:请告诉我们如何以及在哪里获得异常。我得到了,它在上面的代码中。当该依赖属性设置为null时,当该值设置为null@AnthonyRussell:何时何地将值设置为null
?请提供一个代码片段。并告诉我们您使用的是什么XAML框架。