作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以,我有这个应用程序,我可以在其中选择汽车并查看汽车信息...我正在显示类似 this 的汽车.
我正在使用 Rg.Plugins.Popup,所以当我单击汽车图标时,它会打开带有“我的汽车”的弹出窗口
所以现在我面临一个问题,当我选择汽车时,我想刷新当前页面以便显示汽车的信息...我正在处理汽车按钮,点击下一个 View 模型:
public class MyCarViewModel : ViewModelBase
{
public MyCarViewModel()
{
}
public MyCarViewModel(INavigation navigation)
{
this.Navigation = navigation;
this.SelectedCar = null;
GetClientCars();
}
private Page page { get; set; }
private List<CarInfo> _CarList;
public List<CarInfo> CarList
{
get
{
return _CarList;
}
set
{
_CarList = value;
OnPropertyChanged("CarList");
}
}
private CarInfo _SelectedCar;
public CarInfo SelectedCar
{
get
{
return _SelectedCar;
}
set
{
_SelectedCar = value;
OnPropertyChanged("SelectedCar");
if (_SelectedCar != null)
{
CarSelected(_SelectedCar);
}
}
}
public INavigation Navigation { get; set; }
private void CarSelected(CarInfo car)
{
App.choosedCar = car;
PopupNavigation.Instance.PopAllAsync();
this.SelectedCar = null;
}
}
我想刷新这个 View
<views:BaseMainPage
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="OficinaDigitalX.Views.CarDetails"
xmlns:views="clr-namespace:OficinaDigitalX.Views">
<views:BaseMainPage.Content>
<StackLayout>
<Label Text="{Binding VID, StringFormat='Modelo: {0:F0}'}" FontAttributes="Bold"
FontSize="Large"/>
<Label Text="{Binding LicencePlate, StringFormat='Matrícula: {0:F0}'}"/>
<Label Text="{Binding Chassis, StringFormat='Chassis: {0:F0}'}"/>
<Label Text="{Binding Km, StringFormat='Ultimos Km Registados: {0:N0}'}"/>
</StackLayout>
</views:BaseMainPage.Content>
</views:BaseMainPage>
和 xaml.cs
public partial class CarDetails : BaseMainPage
{
public CarDetails(CarInfo car)
{
InitializeComponent();
BindingContext = new CarDetailViewModel(this);
App.currentPage = this;
if (car != null)
{
this.Title = "Dados de " + car.MakerandModel;
}
else
{
this.Title = "Escolha uma Viatura";
}
}
}
我在这里面临很多问题,因为我的汽车图标是我的“BaseMainPage”的一部分,它由其他 View 扩展(因此图标可以显示在所有 View 上)...
所以当我点击按钮时,应用程序不知道它的当前页面...我想我可能会使用导航堆栈来重新加载它,但我不太知道该怎么做......希望大家帮帮忙
最佳答案
嗯,基本上你不需要刷新页面或重新加载页面,你只需要刷新数据。
由于您正在使用 OnPropertyChanged(INotifyPropertyChanged),您已经完成了一半。而不是使用 List CarList 使用 ObservableCollection CarList。
如果您故意要重新加载页面,请在关闭弹出窗口时保存您的数据并调用构造函数/重新启动页面。
希望你能实现你正在寻找的东西。
关于c# - 如何在 Xamarin Forms 上刷新或召回页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54804774/
我是一名优秀的程序员,十分优秀!