You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET MAUI中ExportPage页面绑定的ExportItem始终为NULL问题

.NET MAUI ExportPage中ExportItem始终为NULL的解决方案

问题核心

四个页面结构几乎一致,但ExportPage中通过Item属性获取的ExportItem始终为NULL,即使复制其他正常页面的代码也无法解决。

代码问题分析

1. BindingContext被错误覆盖

在ExportPage的构造函数中,你设置了BindingContext = this;,这直接覆盖了XAML中定义的<models:ExportItem />作为BindingContext的设置。而Item属性的getter是将BindingContext转换为ExportItem,此时BindingContext是页面实例本身,转换自然返回NULL。

2. 绑定上下文不匹配

由于BindingContext被设置为页面类,XAML中控件绑定的StartDate、ToDate、Recipient实际上是尝试绑定到页面类的属性,但页面类并没有这些属性,导致用户输入的值无法正确传递到ExportItem实例中。

解决方案

步骤1:移除构造函数中错误的BindingContext赋值

修改ExportPage的构造函数,删除BindingContext = this;这一行:

public ExportPage(WhatGoesInDatabase whatGoesInDatabase)
{
    InitializeComponent();
    // 移除 BindingContext = this;
    database = whatGoesInDatabase;
}

这样XAML中定义的ExportItem实例会成为默认的BindingContext,QueryProperty传递的Item参数也能正确设置BindingContext。

步骤2:确保绑定模式为双向(可选但推荐)

虽然MAUI中Entry和DatePicker的默认绑定模式是双向,但显式声明可以避免潜在问题,修改XAML中的绑定:

<DatePicker Date="{Binding StartDate, Mode=TwoWay}" MinimumDate="01/01/2023"/>
<DatePicker Date="{Binding ToDate, Mode=TwoWay}"/>
<Entry Text="{Binding Recipient, Mode=TwoWay}" />

步骤3:检查Shell导航参数(如果使用)

如果是通过Shell导航到ExportPage,确保传递参数的方式正确,例如:

await Shell.Current.GoToAsync($"{nameof(ExportPage)}?Item={yourExportItemInstance}");

注:若传递复杂对象,需确保导航参数的序列化/反序列化配置正确,若其他页面正常则此步骤可忽略。

验证修改后效果

修改完成后,点击Export按钮时,Item属性会正确获取到BindingContext中的ExportItem实例,包含用户输入的StartDate、ToDate和Recipient值。

内容的提问来源于stack exchange,提问作者LadySynammon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 02:12:39