gpt4 book ai didi

c# - Windows Phone 8.1 数据绑定(bind) ListView [XAML]

转载 作者:行者123 更新时间:2023-11-30 21:55:43 25 4
gpt4 key购买 nike

C#:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;

public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();

this.NavigationCacheMode = NavigationCacheMode.Required;
}

public class data
{
public string id { get; set; }
}

List<data> datalist = new List<data>();

int counter = 100000000;

private void button_Click(object sender, RoutedEventArgs e)
{
data add = new data();
counter += 1;
add.id = counter.ToString();
datalist.Add(add);
}
}

XAML:

<Page
x:Class="SocialApp1.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:SocialApp1"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">

<Grid>
<Button x:Name="button"
Content="Get" HorizontalAlignment="Left" Margin="67,550,0,0" VerticalAlignment="Top" Click="button_Click" Width="368"/>
<ListView Margin="24,0,19,311">
<ListView.ItemTemplate>
<DataTemplate>
<Border CornerRadius="20" Background="DodgerBlue" Height="65">
<StackPanel Orientation="Horizontal">
<TextBlock TextWrapping="Wrap" Margin="10" Text="{Binding id}" FontSize="20" />
</StackPanel>
</Border>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
</Page>

您好,我一直在尝试在 Windows Phone 8.1 中进行数据绑定(bind)。我发布了所有代码以防万一我遗漏了什么。我如何让它工作?因为当我将它部署到手机上并按下 Get 按钮时,它没有执行任何操作。

期望的输出:

1) 每次用户按下 Get 按钮时增加 id

2) 在datalist中添加新的id

3) 在 ListView 中显示它。

最佳答案

要更新 ListView 中的项目,必须通知它绑定(bind)的属性已更改。在这种情况下,您有要向其添加项目的集合,但不会通知 ListView 集合已更改。要通知 ListView 集合已更改,您必须使用 ObservableCollection<T>或派生自它的类。这意味着您必须更改您的 List<data>ObservableCollection<data>

ObservableCollection<data> dataList { get; set; }

如果您想向集合中添加自定义方法/属性,或者更容易通过 XAML 声明实例,您可能需要创建 ObservableCollection<T> 的子类。以避免以后重构。为什么你可能想要创建一个子类而不是直接使用 ObservableCollection<T>在这个问题的答案中解释:Collection that inherits from ObservableCollection - What are the benefits?

如果您以后遇到类似的问题,例如当集合的项目更改时 ListView 没有更改,您应该查看 INotifyPropertyChanged -接口(interface)。

关于c# - Windows Phone 8.1 数据绑定(bind) ListView [XAML],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32046523/

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