WPF后台代码访问DataContext强转自定义类始终为null问题排查
错误原因
你XAML中给窗口设置DataContext的写法有误,最终窗口的DataContext实际是字符串值"myDataSource",并非你在资源中定义的myClass实例,因此执行as myClass类型转换时永远返回null。
你当前错误的DataContext配置代码:
<Window.DataContext> <Binding Source="myDataSource"/> </Window.DataContext>
上述写法里直接给Source赋值字符串,WPF不会自动去资源字典中匹配Key为myDataSource的对象,只会把传入的字符串本身作为绑定源。
修复方法
二选一即可:
- 方法1:直接用资源扩展给DataContext赋值,替换原有Binding写法
<Window.DataContext> <StaticResource ResourceKey="myDataSource"/> </Window.DataContext> - 方法2:如果要保留Binding写法,需要显式通过StaticResource找到资源实例作为Binding源
<Window.DataContext> <Binding Source="{StaticResource myDataSource}"/> </Window.DataContext>
修改完成后运行,点击按钮时dataContext变量会正确拿到myClass实例,可正常读取Text属性值,TextBox的双向绑定也会正常工作。
内容的提问来源于stack exchange,提问作者miguello
相关产品推荐
相关产品推荐

