Xamarin Forms 导航问题
Xamarin Forms navigation issue
我正在开发 Xamarin Forms 应用程序,我 运行 遇到了问题。
导航系统好像有点问题。我正在使用根 NavigationPage 来托管我的页面,它一直运行良好,除了...
我有一个包含项目列表的子页面。点击时,每个项目都应在单独的页面上显示有关其自身的信息(无论是否为模态)。
但是,它只在第一次有效。第二次我尝试检查一个条目时,它似乎加载了两次(字体更粗,有点模糊),当我按回时,一层留在后面,而另一层随着关闭动画移动(这就是为什么我认为它是加载了两次)。
代码如下:
public partial class NotesPage : ContentPage {
protected override void OnAppearing()
{
base.OnAppearing();
NotesList.ItemsSource = VM.Notes; // VM is my ViewModel, NotesList is a ListView defined in XAML
NotesList.ItemSelected += async (sender, e) =>
{
if (e.SelectedItem == null) return;
await Navigation.PushAsync(new NoteDetails((Note)e.Item));
((ListView)sender).SelectedItem = null;
};
}
}
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="Views.Notes.NoteDetails">
<StackLayout>
<Label Text="{Binding Title}" />
<Label Text="{Binding Date}" />
<Label Text="{Binding Author}" />
<Label Text="{Binding Content}" />
</StackLayout>
</ContentPage>
NoteDetails' class 仅将 BindingContext 设置为传递的 Note 对象。
Note class 有四个属性:一个 String Title,一个 String Date(它的 code-back 字段是一个 DateTime 对象,转换发生在 getter-setter),一个 String Author 和字符串内容。所有细节都正确显示。
唯一的问题是第二次检查 - 它根本无法正常工作。
可能是什么问题?
当您关闭模式时,OnAppearing 会再次调用。
这意味着下次您点击 ItemSelected 时,代码将 运行 两次。
虽然只有 iOS。
您还可以设置一个变量来检查页面是否是第一次加载。
protected override void OnAppearing()
{
if (_isFirstLoad) {
//-- create your list
//-- _isFirstLoad = true;
}
}
我正在开发 Xamarin Forms 应用程序,我 运行 遇到了问题。
导航系统好像有点问题。我正在使用根 NavigationPage 来托管我的页面,它一直运行良好,除了...
我有一个包含项目列表的子页面。点击时,每个项目都应在单独的页面上显示有关其自身的信息(无论是否为模态)。
但是,它只在第一次有效。第二次我尝试检查一个条目时,它似乎加载了两次(字体更粗,有点模糊),当我按回时,一层留在后面,而另一层随着关闭动画移动(这就是为什么我认为它是加载了两次)。
代码如下:
public partial class NotesPage : ContentPage {
protected override void OnAppearing()
{
base.OnAppearing();
NotesList.ItemsSource = VM.Notes; // VM is my ViewModel, NotesList is a ListView defined in XAML
NotesList.ItemSelected += async (sender, e) =>
{
if (e.SelectedItem == null) return;
await Navigation.PushAsync(new NoteDetails((Note)e.Item));
((ListView)sender).SelectedItem = null;
};
}
}
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="Views.Notes.NoteDetails">
<StackLayout>
<Label Text="{Binding Title}" />
<Label Text="{Binding Date}" />
<Label Text="{Binding Author}" />
<Label Text="{Binding Content}" />
</StackLayout>
</ContentPage>
NoteDetails' class 仅将 BindingContext 设置为传递的 Note 对象。 Note class 有四个属性:一个 String Title,一个 String Date(它的 code-back 字段是一个 DateTime 对象,转换发生在 getter-setter),一个 String Author 和字符串内容。所有细节都正确显示。
唯一的问题是第二次检查 - 它根本无法正常工作。 可能是什么问题?
当您关闭模式时,OnAppearing 会再次调用。
这意味着下次您点击 ItemSelected 时,代码将 运行 两次。
虽然只有 iOS。
您还可以设置一个变量来检查页面是否是第一次加载。
protected override void OnAppearing()
{
if (_isFirstLoad) {
//-- create your list
//-- _isFirstLoad = true;
}
}