簡體   English   中英

動態地將可單擊列表項添加到Windows Phone ListBox

[英]Dynamically Add Clickable List Items to Windows Phone ListBox

我知道如果有一個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項添加到listBox .ie

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

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

另外一件事,一個樣式listBox項目怎么樣? 除了他們只是出現在彼此堆疊的無聊的字符串?

提前致謝!

假設您有一組GUID。

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

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

myList.ItemsSource = guids;

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

要處理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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM