【发布时间】:2015-08-08 07:25:51
【问题描述】:
我正在开发 Windows Phone 8.1 通用应用程序并遇到以下问题。
该应用程序有许多视图及其对应的 Caliburn.Micro ViewModel,其中两个包含一个 MapControl,其引脚绑定到 MapLocation 对象的 Observable 集合。
MapLocation 类如下:
public class MapLocation : PropertyChangedBase
{
private string _title;
public string Title
{
get { return _title; }
set
{
_title = value;
NotifyOfPropertyChange();
}
}
private Geopoint _geoPoint;
public Geopoint GeoPoint
{
get { return _geoPoint; }
set
{
_geoPoint = value;
NotifyOfPropertyChange();
}
}
private Uri _imageUri;
public Uri ImageUri
{
get { return _imageUri; }
set
{
_imageUri = value;
NotifyOfPropertyChange();
}
}
private bool _isMoving;
public bool IsMoving
{
get { return _isMoving; }
set
{
_isMoving = value;
NotifyOfPropertyChange();
}
}
private Windows.Services.Maps.MapAddress _address;
public Windows.Services.Maps.MapAddress Address
{
get { return _address; }
set
{
_address = value;
NotifyOfPropertyChange();
}
}
}
列表通过 DispatcherTimer 频繁更新,以显示所有项目的更新位置。
我面临的问题是,每次我在至少访问过一次后导航到一个页面时,都会收到 AccessViolation 异常并且应用程序崩溃。
我猜这可能与我的 ViewModel 的某种兑现有关。
以前有人见过这种行为吗?
【问题讨论】:
-
你是如何向 ObservableCollection 添加项目的?
-
抱歉,Type 属性不存在...它是误留在那里的。
-
我想,但我已经抛出了我原来的问题。您是否深入了解是否真的是 NavigationService 违规或与收集有关?您还启用了日志记录吗?
-
我该如何挖掘它...调试时得到的只是输出中的一条消息程序“[2132] Client.WindowsPhone.exe”已退出,代码为 -1073741819( 0xc0000005) '访问冲突'。 你是什么意思日志记录?
-
将项目添加到集合
MapLocations.Insert(0, new MapLocation { Id = i, ImageUri = new Uri("ms-appx:///Assets/pin.png"), GeoPoint = new Geopoint(new BasicGeoposition { Latitude = 38.03 + (rand.NextDouble() / 100.0), Longitude = 23.82 + (rand.NextDouble() / 100.0) }) }); //Add new
标签: c# xaml caliburn.micro win-universal-app