프리즘 6.3을 사용하여 seafile로 간단한 클라우드 클라이언트를 구축하고 있습니다.
사용자가 로그인하면 측면 영역의 사이드 바 (SidebarRegion)로 이동합니다. OnNavigatedTo
은 컬렉션에로드되어 표시되는 라이브러리입니다.PropertyChanged 이벤트의 NullReferenceException (프리즘 6.3)
선택한 라이브러리가 변경되면 새로운 ItemsView 인스턴스 (ContentRegion)로 이동하고 라이브러리에서 항목을로드하여 표시 할 수도 있습니다.
이제 항목을 클릭하면 다른 측면 영역으로 이동하여 항목에 대한 자세한 정보를 표시합니다.
public SeafDirEntry SelectedItem
{
get { return _selectedItem; }
set
{
if (!SetProperty(ref _selectedItem, value) || value == null)
return;
var parameter = new NavigationParameters {{ "item", _selectedItem }};
_regionManager.RequestNavigate(_regionNames.InfoBarRegion, new Uri("ItemInfoView", UriKind.Relative), parameter);
}
}
항목/파일이 서버에서 삭제 한 후 이제 항목
을 삭제하는 명령에 중독되어 삭제 버튼을,도 있는데, 나는에서 항목을 다시로드 PubSubEvent
을 엮은 라이브러리는 RefreshItemsAsync()
방법입니다. 항목 수집이 덮어 후, PropertyChanged
이벤트 내가이 시도하더라도 NullReferenceException
을 던졌습니다 :
public ObservableCollection<SeafDirEntry> Items
{
get { return _items; }
set
{
if (value == _items)
return;
_items = value;
RaisePropertyChanged(); // <- throws here
// SetProperty(ref _items, value); <- same result
}
}
나는 PubSubEvent
의 페이로드로 항목 컬렉션에서 항목을 제거 할 수도했지만, 또한 NullReferenceException
을 _items.Remove(itemFromPayload)
에 던졌습니다.
버튼을 사용하여 컬렉션을 수동으로 새로 고침해도 동일한 결과가 발생합니다.
ItemsViewModel
은 라이브러리 당 한 번만 만들어지고 전환 후에도 저항하므로 참조가 있어야합니다.
내가 여기에서 무엇을 놓쳤는가?
[NullReferenceException은 무엇이며 어떻게 수정합니까?] (http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix -it) – Rafael
@SvenLion 정말, 내 설명 전체를 읽었 니? 나는 예외가 어디 있는지 알고 있지만, 어디서 참조가 손실되는지 알지 못합니다. 또한 링크 된 게시물을 알고 있지만이 wpf 특정 오류 및 해결 방법을 찾는 데 도움이되지 않습니다. –
NullReferenceException은 항상 null로 설정되거나 초기화되지 않는 문제 때문에 wpf 특정 오류가 아닙니다. – Rafael