콘텐츠 컨트롤의 바운드 속성을 사용하여 주 창에서 사용자 정의 컨트롤을 변경하고 있습니다.WPF보기 contentControl 바운드 속성 변경시 렌더링되지 않음
XMAL :
<ContentControl Grid.Row="0" Content="{Binding MainContent, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"></ContentControl>
재산 :
private UserControl _mainContent;
public UserControl MainContent
{
get
{
return _mainContent;
}
set
{
_mainContent = value;
OnPropertyChanged();
}
}
코드 숨김 재산 ON
MainContent = new TestUserControl();
변경 :
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
if (this.PropertyChanged != null)
{
this.PropertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
}
}
protected virtual void OnPropertyChanged()
{
string propertyName = new System.Diagnostics.StackTrace().GetFrame(1).GetMethod().Name.Substring(4);
OnPropertyChanged(propertyName);
}
,536,
내 문제는 특정 테스트 머신 (다른 테스트 머신과 비슷하지만 독특하거나 이상한 것은 아닙니다. 윈도우 7, 4GB 램 등),이 메커니즘을 사용하여 usercontrols을 변경하면 응용 프로그램이 중단됩니다.
내 로그를 보면 변경 명령이 수신되고 새 사용자 정의 컨트롤이 인스턴스화되며 생성자가 실행됩니다. 기본 콘텐츠 속성이 설정되고 OnPropertyChanged 이벤트가 발생하면
그리고 아무 것도 표시되지 않습니다. 응용 프로그램이 멈추고 윈도우가 응답하지 않고 응용 프로그램을 닫습니다.
사용자 정의 컨트롤의 OnLoaded 이벤트가 실행되지 않습니다.
이렇게하면 특정 시스템에서 사용자 컨트롤을이 방법으로로드 할 때 발생합니다.
아이디어, 의견을 환영합니다. 아이디어를 디버깅하는 방법을 환영합니다.
업데이트 : 테스트 컴퓨터이므로 매우 자주 재부팅되지 않습니다.
일단 컴퓨터를 재부팅하면 문제가 사라졌습니다. 나는 왜 이런 일이 다시 일어나지 않는지 알고 싶다.
추신. 대상 플랫폼은 x86이고 문제 기계는 x64이지만 다른 창 7 x64에는 문제가 없습니다. 우리가 사용하는 4.0 내가 전에 한 번이 우연히
어떤 프레임 워크 버전을 타겟팅하고 있습니까? 빌드 구성 (x86/any/x64)이란 무엇입니까? 대상 컴퓨터가 Windows 32 또는 64bit입니까? 나는 다른 이상한 행동과 함께 한 컴퓨터 (Win 7 64 비트를 "모든 CPU"용으로 빌드)에서 몇 가지 문제를 최근에 겪었고 x64 용 빌드 만 도와주었습니다. – hyp
MainContent 속성을 종속성 속성으로 변환 해보십시오. 창에 이름을 지정하고 {Binding ElementName = myWindow, Path = MainContent}와 같은 ElementName 구문을 사용하여 xaml에서 창 뒤에있는 코드에 정의 된 종속성 속성을 바인딩 할 수 있습니다. 그저 추측입니다. 도움이되는지 확인하십시오. 바인딩 PresentationTraceSources.TraceLevel = High에 추가하여 결과물이 유용하게 반환되는지 확인할 수도 있습니다. 그렇지 않으면 코드가 아닌 mashine의 문제점을 추측 할 수 있습니다. – dowhilefor