2016-06-09 33 views
0

我有這個代碼我測試應該檢查一個listview控件的現有項目,並返回一個文本「現有項目」,當它發現一個,現在我知道它是可能使用循環做到這一點,但我想學會正確使用contains方法,並且找不到關於如何在面板上使用contains方法的真正解釋。代碼似乎工作,一旦我從列表視圖中刪除堆棧面板,但一旦我添加任何類型的面板它似乎不再工作,我真的很困惑爲什麼發生這種情況我確定我是做錯事,會在這裏得到任何幫助的代碼:Windows通用listview.contains方法似乎不能在面板上工作

private void Test_Click(object sender, RoutedEventArgs e) 
    { 
     TextBlock testblock = new TextBlock(); 
     testblock.Text = textBox6.Text; 

     StackPanel TestPanel = new StackPanel(); 
     TestPanel.Children.Add(testblock); 

     if (listView.Items.Contains(TestPanel)) 
     { 
      textBox5.Text = "existing item"; 
     } 
    else 
     { 
      listView.Items.Add(TestPanel); 
     } 
    } 

回答

1

當你火借第一次Test_Click事件,它會創建StackPanel的新實例。然後它將被添加到ListView.Items

當您再次觸發Test_Click事件時,它將創建另一個StackPanel的新實例。這不等於StackPanel的第一個實例。所以listView.Items.Contains(TestPanel)總是返回false。

我們可以在MainPage類定義一個字段名爲「パ」,並初始化它在構造函數中,如:

private StackPanel TestPanel; 
private TextBlock testblock; 

public MainPage() 
{ 
    this.InitializeComponent(); 
    testblock = new TextBlock(); 
    TestPanel = new StackPanel(); 
    TestPanel.Children.Add(testblock); 
} 

private void Test_Click(object sender, RoutedEventArgs e) 
{ 
    if (listView.Items.Contains(TestPanel)) 
    { 
     textBox5.Text = "existing item"; 
    } 
    else 
    { 
     testblock.Text = textBox6.Text; 
     listView.Items.Add(TestPanel); 
    } 
} 
+0

感謝的人,它的工作! –

相關問題