2012-06-25 22 views
1

我明白,如果一個人有一個列表框可以很容易地添加項目做這樣的事情:動態添加可點擊列表項到Windows Phone的ListBox

ListBox myList = new ListBox(); 
myList.Items.Add("Added Item 1"); 
myList.Items.Add("Added Item 2"); 
myList.Items.Add("Added Item 3"); 

我最初不知道有多少項目會被添加到列表中,所以我不像我在這裏添加靜態內容,我遍歷一個for循環並以這種方式添加項目。繼續...

我該如何不只是將項目添加到列表框中,還要讓每個項目都可點擊。例如說有一個12個GUID的數組,併爲每個guid項添加到列表框.i.e。

myList.Items.Add(guidArray[i]); 

然後根據選擇的guid做出不同的反應?

而另一件事情,一個樣式listBox項目如何?除了他們只是表現爲堆疊在彼此之下的無聊的弦?

在此先感謝!

回答

4

假設你有一個GUID集合。

var guids = new List<Guid>(); 
for (var i = 0; i < 12; i++) 
{ 
    guids.Add(Guid.NewGuid()); 
} 

然後,您可以將此集合綁定到您的ListBox控件。

myList.ItemsSource = guids; 

ListBox控件將根據guid集合的內容自動更新。

要處理ListBox中項目的click事件,您需要處理該控件的SelectionChanged事件。

連接事件處理程序。

<ListBox Name="MyList" 
     SelectionChanged="MyList_SelectionChanged"> 
... 
</ListBox> 

現在你可以在事件處理程序編寫必要的代碼:

private void MyList_SelectionChanged(object sender, 
    System.Windows.Controls.SelectionChangedEventArgs e) 
{ 
    // Find out which item was clicked 
    if (e.AddedItems.Count > 0) 
    { 
     var myGuid = e.AddedItems[0] as Guid; 
     if (myGuid == null) 
      return; 
     // ... 
    } 
} 

要在ListBox的風格來控制每個項目。那是一個完整的其他問題。首先將ListBox綁定到數據源(本例中爲GUID集合)。

然後在XAML中,您可以自由設計ListBox的內容。使用ListBox的ItemTemplate和DateTemplate。在模板中,您可以指定ListBox應爲每個項目呈現的內容。

讓我們爲每個項目在1x1網格中渲染一個TextBlock。只需將TextBlock的Text屬性綁定到ListBox項目的某個屬性即可。

<ListBox Name="MyList" 
    SelectionChanged="MyList_SelectionChanged"> 
    <ListBox.ItemTemplate> 
     <DataTemplate>    
      <Grid> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="*" /> 
        <ColumnDefinition Width="*" /> 
       </Grid.ColumnDefinitions> 

       <Grid.RowDefinitions> 
        <RowDefinition Height="*" /> 
       </Grid.RowDefinitions> 

       <TextBlock Grid.Column="1" Text="{Binding ...}" /> 
      </Grid> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 
+0

晶瑩剔透,正確的答案。非常感謝你! – Tiwaz89

+0

只是最後一個問題,在XAML中有你的列定義。一個應該是寬度和另一個高度的權利?在這種情況下,我看到兩者都是寬度,也許只是一個錯字是?另外,我看到RowDefinition沒有Width屬性。它是否是父母的寬度?當定義寬度和高度屬性時,你使用px,%還是什麼? – Tiwaz89

相關問題