嵌套控件设置InputTransparent=true时触发Context空引用异常求助
InputTransparent 异常:Context can not be null
异常触发场景
控件嵌套时出现该异常,相关代码如下:
XAML 布局代码
<!--控件嵌套结构--> <ContentPage.Content> <local:SampleView> <local:SampleView.Content> <local:SampleView2> <local:ContextNullException /> </local:SampleView2> </local:SampleView.Content> </local:SampleView> </ContentPage.Content>
自定义控件构造代码
public ContextNullException() { InputTransparent = true; }
环境信息
Platform:AndroidSDK:7.x
解决建议
- 延迟设置属性:不在构造函数中直接设置
InputTransparent = true,改用控件生命周期方法(比如OnAttachedToWindow),此时控件已关联上下文:
protected override void OnAttachedToWindow() { base.OnAttachedToWindow(); InputTransparent = true; }
- 确保上下文传递:自定义控件(如
SampleView、SampleView2)的构造函数要正确接收并传递Context到基类,避免子控件上下文为空:
public SampleView(Context context) : base(context) { InitializeComponent(); }
- 版本兼容修复:SDK 7.x的Xamarin.Forms可能存在该平台bug,尝试升级到同分支最新补丁版,或通过绑定属性方式设置
InputTransparent替代构造函数硬编码。
内容的提问来源于stack exchange,提问作者k.kk
相关产品推荐
相关产品推荐

