C# 另一种解决';无法访问静态上下文中的非静态属性';使用依赖属性
我有一个字符串C# 另一种解决';无法访问静态上下文中的非静态属性';使用依赖属性,c#,wpf,static,dependency-properties,non-static,C#,Wpf,Static,Dependency Properties,Non Static,我有一个字符串source,我正试图从我的xaml读入到我的视图中,并分配给一个dependencProperty。我遇到一个错误无法在静态上下文中访问非静态属性“Source”,我理解这个错误,但我无法解决如何避免它。如果有人能建议我如何将源代码更新为源代码的值,请 公共字符串源 { 获取{return(string)GetValue(SourceProperty);} set{SetValue(SourceProperty,value);} } 公共静态只读DependencyPropert
source
,我正试图从我的xaml读入到我的视图中,并分配给一个dependencProperty
。我遇到一个错误无法在静态上下文中访问非静态属性“Source”
,我理解这个错误,但我无法解决如何避免它。如果有人能建议我如何将源代码
更新为源代码
的值,请
公共字符串源
{
获取{return(string)GetValue(SourceProperty);}
set{SetValue(SourceProperty,value);}
}
公共静态只读DependencyProperty SourceProperty=
从属属性。寄存器(
姓名(来源),
类型(字符串),
类型(标记指示器),
新的PropertyMetadata(null,ReadInSource));
私有静态void ReadInSource(DependencyObject d、DependencyPropertyChangedEventArgs e)
{
字符串源=e.NewValue.ToString();
Source=Source;//此处出错:无法在静态上下文中访问非静态属性“Source”
}
从字面上理解您的问题,您只需为方法转换d
参数:
private static void ReadInSource(DependencyObject d,DependencyPropertyChangedEventArgs e)
{
标记指示器标记指示器=(标记指示器)d;
字符串源=e.NewValue.ToString();
tagsIndicator.Source=Source;//此处错误:无法在静态上下文中访问非静态属性“Source”
}
这将使错误消失
但是
如果这就是回调要做的所有事情,那么真正的解决方案似乎就是删除回调方法(当然,不要将其注册到DependencyProperty
)
依赖属性系统的全部要点是WPF代表您管理属性值。仅当依赖项属性系统已更改属性时,才会调用该回调,例如,通过绑定或直接设置属性本身(在属性设置器中,该属性调用DependencyObject.SetValue()
)
再次将属性设置为刚刚设置的值,以响应已设置的属性,对我来说似乎没有意义
除非您在问题中没有描述某些特定需求,否则您可以完全删除该方法。(即使你确实有这样的需求,你也应该问一个不同的问题,因为考虑到它引导你找到的代码,你似乎在错误地满足这种需求。)作为一个注释,因为NewValue可以为null,
e.NewValue.ToString()
应该是e.NewValue As string
或e.NewValue?.ToString()
。