Windows phone 7 如何刷新绑定属性,因为;无关的;当用户返回时是否更改?
我的应用程序中有以下两种型号:Windows phone 7 如何刷新绑定属性,因为;无关的;当用户返回时是否更改?,windows-phone-7,data-binding,ivalueconverter,Windows Phone 7,Data Binding,Ivalueconverter,我的应用程序中有以下两种型号: public class AppSettings : INotifyPropertyChanged { private Units _mainUnits; // Units is an Enum. public Units MainUnits { get { return _mainUnits; } set { if (!_mainUnits != value) { _mainUnits = valu
public class AppSettings : INotifyPropertyChanged
{
private Units _mainUnits; // Units is an Enum.
public Units MainUnits {
get { return _mainUnits; }
set {
if (!_mainUnits != value) {
_mainUnits = value;
this.OnPropertyChanged("MainUnits");
}
}
}
// Standard PropetyChanged event, etc. elided (using NotifyPropertyWeaver).
[...]
}
public class Ride : INotifyPropertyChanged
{
private double _rideDistance;
public double RideDistance {
get { return _rideDistance; }
set {
if (!_rideDistance != value) {
_rideDistance = value;
this.OnPropertyChanged("RideDistance");
}
}
}
// Standard PropetyChanged event, etc. elided (using NotifyPropertyWeaver).
[...]
}
然后在我的应用程序页面上,我有一个绑定到RideInstance属性的TextBlock
,该属性使用IValueConverter
,该转换器根据main units
enum的值将RideInstance
从米转换为公里或英里
当骑乘
模型的值发生变化时,这可以正常工作,但是当用户更改设置页面上的AppSettings.MainUnit属性并导航“返回”到显示页面时,我希望刷新页面
例如:
AppSettings.main单位
==Units.英制,RideDistance
显示为“1.3英里”AppSettings.mainutis
更改为Units.MetricRideDistance
列为2.1km
,但仍以英里为单位如果(e.NavigationMode==Back){DataContext=null;DataContext=myViewModel;}我想你是说“elided”?你能在某个地方上传一个复制程序吗?@Simon-更新了链接到。是的,我考虑过类似的事情,我也考虑过挂接主机的更改事件并调整Ride的值,但是有几个属性受此影响,还有几个页面会发生这种情况(可能会引起一些闪烁):在主页的OnNavigatedTo中,如果(e.NavigationMode==Back){DataContext=null;DataContext=myViewModel;}嗯,刚刚在注释中尝试了这个选项,它似乎起作用了-闪烁(如果有的话)被过渡动画隐藏(至少在模拟器上,我需要部署到我的手机上才能真正确认)-如果你在回答中包含这一点,那么至少会有一个向上投票;)