我是 C# 和 .net MAUI 的新手,在数据绑定方面遇到了一些麻烦。
我有两个页面:
我使用 SelectionChanged 事件将两者绑定在一起,如下所示:
private async void classesCollection_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (e.CurrentSelection.Count != 0)
{
Class selectedClass = e.CurrentSelection.FirstOrDefault() as Class;
Debug.WriteLine($"Selected {selectedClass.Title} with {selectedClass.Instructor}");
var navigationParameters = new Dictionary<string, object> {
{ "class", selectedClass }
};
await Shell.Current.GoToAsync("class_details", navigationParameters);
classesCollection.SelectedItem = null;
}
}
这完美地工作。它输出
Selected ClassA with Instructor1
然后打开我的ClassDetails页面。
ClassDetails接收到selectedClass对象,用Debug语句输出
Class Details for ClassA with Instuctor1
,完美
[QueryProperty(nameof(SelectedClass), "class")]
public partial class ClassDetails : ContentPage, IQueryAttributable, INotifyPropertyChanged
{
public Class SelectedClass { get; private set; }
public void ApplyQueryAttributes(IDictionary<string, object> query)
{
SelectedClass = query["class"] as Class;
OnPropertyChanged("class");
Debug.WriteLine($"Class Details for {SelectedClass.Title} with {SelectedClass.Instructor}");
}
public ClassDetails()
{
InitializeComponent();
BindingContext = this;
}
}
问题是我的绑定在我的 XAML 页面上不起作用。
XAML 页面如下所示:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="Sign_In_001.Views.ClassDetails"
Title="ClassDetails">
<VerticalStackLayout>
<Label
Text="Class Details"
VerticalOptions="Center"
HorizontalOptions="Center" />
<Label
Text="{Binding Title}"
VerticalOptions="Center"
HorizontalOptions="Center" />
<Label
Text="{Binding Instructor}"
VerticalOptions="Center"
HorizontalOptions="Center" />
</VerticalStackLayout>
</ContentPage>
<Label>
没有数据绑定,所以效果很好。<Label>
显示“课程详细信息”,这是我页面的标题,不是我所期望的.<Label>
是blank并在输出日志中产生这个警告: Microsoft.Maui.Controls.Xaml.Diagnostics.BindingDiagnostics: Warning: 'Instructor' property not found on 'Sign_In_001.Views.ClassDetails', target property: 'Microsoft.Maui.Controls.Label.Text'
很明显,我无法访问我的 XAML 中的 SelectedClass,但我不确定从这里去哪里。
感谢您的任何建议!