2013-07-23 2 views
3
private void Window_Loaded(object sender, RoutedEventArgs e) 
{ 
    try 
    { 
     RichTextBox myRTB = new RichTextBox(); 
     ListViewItem lvi1 = new ListViewItem(); 
     ListViewItem lvi2 = new ListViewItem(); 
     lvi1.Content = myRTB; 
     lvi2.Content = myRTB; 

     this.lstView1.Items.Add(lvi1); 
     this.lstView2.Items.Add(lvi2); 
    } 
    catch(Exception ex) 
    { 
     MessageBox.Show(ex.ToString()); 
    } 
} 

두 기계 :
기계 1 : 윈도우 7 32 비트,
머신이 설치 .net4.0 :WPF는 다른 환경에서 다른 동작을합니까?

를 설치 한 윈도우 8 64 비트, .net4.0/4.5 위의 코드는 항상 기계 1에 충돌 예외로 "지정된 요소가

누군가가 자세한 explanatio을 가질 수 (lvi2의 내용이 실제로 비어)는 기계 (2)에서 작동합니다. 먼저 분리, 이미

다른 요소의 논리적 자식 그러나 그런 일이 왜 N,? :

추가 (참고 테스트 응용 프로그램을 VS2010로 구축되어, 4.0 .NET) : 다음 코드는 동일한 문제를 가지고 (기계 2 일을하지 기계 1)

try 
    { 
     RichTextBox myRTB = new RichTextBox(); 
     ListViewItem lvi1 = new ListViewItem();    
     lvi1.Content = myRTB; 
     this.lstView1.Items.Add(lvi1); 
     this.lstView1.Items.Remove(lvi1); 
     ListViewItem lvi2 = new ListViewItem(); 
     lvi2.Content = myRTB; 
     this.lstView2.Items.Add(lvi2); 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.ToString()); 
    } 
+0

내 자신이 있었기 때문에 4.5가 myRTB의 인스턴스를 시각적 트리의 새 위치로 옮기는 것이 좋다고 생각합니다. 4.0에서 충돌이 발생하는 경우 코드가 예상대로 작동하지 않거나, myRTB의 2 개의 영상을 얻지 못합니다. – Andy

답변

6

두 개의 다른 컨트롤의 자식/내용과 동일한 컨트롤을 할당하면 안됩니다.

귀하의 질문에,이 상황에서 동작을 완화하거나 수정 한 .NET Framework 4.5의 변경 사항이있을 수 있습니다. 앱이 4.0을 대상으로한다고해도 .NET 4.5 런타임에서는 실행됩니다. 즉, .NET 4.5가 .NET 4.5를 대체하여 나란히 작동합니다.

+0

.NET 4.5 런타임이 없습니다. 프레임 워크 변경 사항이 많은 .NET 4 런타임입니다. – Joey