Windows 8.1 개발 과정에서 발생한 사소한 문제
5789 단어 windows
System.InvalidCastException 유형의 예외는 **.DLL이 발생했지만 사용자 코드에서 처리되지 않았습니다.
추가 정보: Unable to cast COM object of type'System.ComponentModel.PropertyChangedEventHandler' to class type 'System.ComponentModel.PropertyChangedEventHandler'. Instances of types that represent COM components cannot be cast to types that do not represent COM components; however they can be cast to interfaces as long as the underlying COM component supports QueryInterface calls for the IID of the interface.
전제는:charm란에서 공유를 선택하고 공유된 응용을 선택한다.정상적으로 앱을 시작하면 괜찮을 겁니다.(나는 왜 대신의 가르침을 갈망하는지 궁금하다)
오류 코드는 여기입니다 (빨간색 글꼴 부분):
[SuppressMessage("Microsoft.Design", "CA1030:UseEventsWhereAppropriate",
Justification = "This cannot be an event")]
protected virtual void RaisePropertyChanged(string propertyName)
{
#if WIN8
if (string.IsNullOrEmpty(propertyName))
{
throw new NotSupportedException(
"Raising the PropertyChanged event with an empty string or null is not supported in the Windows 8 developer preview");
}
else
{
#endif
//VerifyPropertyName(propertyName);
var handler = PropertyChangedHandler;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
#if WIN8
}
#endif
}
프레임워크 자체의 문제인 줄 알고 해당 코드에서 INotifyPropertyChanged 인터페이스를 다시 실현하고 이 인터페이스를 실현한다.
public class LoginViewModel : ViewModelBase,INotifyPropertyChanged
{
event PropertyChangedEventHandler PropertyChanged;
void NotifyPropertyChanged(string name)
{
if (PropertyChanged != null)
PropertyChanged(this,new PropertyChangedEventArgs(name);
}
}
나는 관련 댓글을 보고 이 답장을 보았다.
Just cast it to
INotifyCollectionChanged
var collectionChanged = propertyObject as INotifyCollectionChanged; if (collectionChanged != null) collectionChanged.CollectionChanged += ...
于是我修改代码为如下:
public class LoginViewModel : ViewModelBase,INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
void NotifyPropertyChanged(string name)
{
var obj = this as INotifyPropertyChanged;
if (obj != null)
obj.PropertyChanged += (s, e) => {
PropertyChanged(s, new PropertyChangedEventArgs(name));
};
}
}
OK, 문제 해결, 관건은 누가 나에게 왜, 어떤 상황에서 이 오류가 발생했는지, 왜 공유에서 발생했는지, 정상적인 상태에서 이 오류가 발생하지 않았는지 알려줄 수 있는가?
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
제한된 크기의 디렉토리를 만드는 방법오늘 저는 장치에 공간이 없을 때 백업 중에 응용 프로그램이 어떻게 작동하는지 테스트(및 수정)하는 작업이 있습니다. 결과적으로 "남은 공간 없음"오류로 백업이 실패하면 새 파일이 없어야 합니다. 지금까지 문제를 재...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.