繁体   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