gpt4 book ai didi

c# - 设置数据绑定(bind)后如何向列表框添加内容?

转载 作者:行者123 更新时间:2023-11-30 18:27:46 25 4
gpt4 key购买 nike

我正在创建一个 Windows Phonw 8.1 应用程序。我有一个 ListBox,当我单击一个按钮时,我想在运行时追加/插入其他列表框。但它不起作用或崩溃。

我的页面构造函数我有这个:

myData = new List<Stuff>() {
new Stuff(){Name="AAA"},
new Stuff(){Name="BBB"},
new Stuff(){Name="CCC"},
new Stuff(){Name="DDD"},
};
myListBox.DataContext = myData;

我的页面的 xaml:

<ListBox x:Name="myListBox" ItemsSource="{Binding}" Background="Transparent">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" FontSize="20" Foreground="Red"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>

好的,这很好,当我启动应用程序时,我可以看到包含 4 个项目的列表。

private void Button_Tapped(object sender, TappedRoutedEventArgs e)
{
myData.Add(new Stuff() { Name = String.Format("Added item #{0}", myData.Count) });

//I tried to set the DataContext again, but it does nothing
myListBox.DataContext = mydata;

//I tried to tell the the list to redraw itself, in winform, the Invalidate() method usually get the job done, so I tried both
myListBox.InvalidateMeasure()
//and / or
myListBox.InvalidateArrange();
//or
myListBox.UpdateLayout();

//I tried
myListBox.Items.Add("Some text");
//or
myListBox.Items.Add(new TextBlock(){Text="Some text"});
//or
(myListBox.ItemsSource as List<Stuff>).Add(new Stuff(){Name="Please work..."});
}

最好的情况就是抛出异常:

An exception of type 'System.Exception' occurred in mscorlib.ni.dll but was not handled in user code

Additional information: Catastrophic failure (Exception from HRESULT: 0x8000FFFF (E_UNEXPECTED))

我也改用了 ListView,但没有任何变化。奖励问题:ListBox 和 ListView 有什么区别?

Google 并没有真正提供帮助,我找到的东西可能是针对旧版本的 Windows Phone 或普通 WPF 或 ASP.Net...

此外,发生的一件奇怪的事情是在将项目添加到列表后没有任何反应,当我点击一个旧项目时,我遇到了灾难性的失败。我的列表项上还没有事件。

我即将放弃数据绑定(bind),而是通过代码一段一段地构建我的应用程序。向列表中添加内容应该不难,我做错了什么?

最佳答案

需要使用 INotifyPropertyChanged 接口(interface)实现一些东西,要么自己做,要么使用内置它的类。

MSDN INotifyPropertyChanged Interface

尝试

using System.ComponentModel;
using System.Collections.ObjectModel;

public class Stuff
{
public Stuff(string name)
{
this.Name = name;
}

public string Name { get; set; }
}


ObservableCollection<Stuff> myData = new ObservableCollection<Stuff>();


myData.Add(new Stuff("abcd"));

关于c# - 设置数据绑定(bind)后如何向列表框添加内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26266133/

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