2013-07-23 51 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安裝
機2:安裝WPF在不同的環境中有不同的行爲?

視窗8 64位,.net4.0/4.5以上的代碼總是機1上崩潰與異常「指定的元素已經是另一個元素的邏輯子,先斷開連接。

但是,它的工作原理機2.(lvi2的內容實際上是空的)

有人能有詳細的explanatio N,爲什麼會發生?(注:測試程序是建立與VS2010,.NET 4.0)

補充:下面的代碼有同樣的問題(機器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只是崩潰,無論代碼如你所期望的那樣無法工作,你不會沒有2 myRTB的視覺效果 – Andy

回答

6

您不應該將兩個不同控件的子/內容分配給相同的控件。

至於你的問題,在這種情況下,可能會改變.NET框架4.5,放寬或修改行爲。即使你的應用程序的目標是4.0,它仍然在.NET 4.5運行時執行。換句話說,.NET 4.5替代了.NET 4.0,而不是並行工作。

+0

沒有.NET 4.5運行時。這是.NET 4運行時的一些框架變化。 – Joey

相關問題