gpt4 book ai didi

c# - 动态添加可点击列表项到 Windows Phone ListBox

转载 作者:太空宇宙 更新时间:2023-11-03 21:58:37 25 4
gpt4 key购买 nike

我知道如果有一个 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 项。即

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

然后根据选择的 guid 做出不同的 react ?

还有一件事,一个样式的 listBox Items 是如何实现的?除了它们只是显示为相互堆叠的无聊字符串之外?

提前致谢!

最佳答案

假设您有一组 GUID。

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

然后您可以将此集合绑定(bind)到您的 ListBox 控件。

myList.ItemsSource = guids;

ListBox 控件将根据您的 guids 集合的内容自动更新。

要处理 ListBox 中某项的单击事件,您需要处理控件的 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 绑定(bind)到数据源(在本例中为 GUID 集合)开始。

然后在XAML中你可以自由设计ListBox的内容。使用列表框的 ItemTemplate 和 DateTemplate。在模板中,您可以指定 ListBox 应为每个项目呈现的内容。

让我们在 1x1 网格中为每个项目呈现一个 TextBlock。只需将 TextBlock 的 Text 属性绑定(bind)到 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>

关于c# - 动态添加可点击列表项到 Windows Phone ListBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11188051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com