Windows phone 8 从WP8中的列表框中删除项目
我是windows phone开发的新手。我正在尝试从列表框中删除所选项目。我有数据类Windows phone 8 从WP8中的列表框中删除项目,windows-phone-8,listbox,windows-phone,listboxitem,Windows Phone 8,Listbox,Windows Phone,Listboxitem,我是windows phone开发的新手。我正在尝试从列表框中删除所选项目。我有数据类 public class MyDataClass { public string MSG { get; set; } public int Id { get; set; } } 然后我尝试删除所选项目(按钮1\u单击事件) 在任务中创建数据列表时出现的问题,使程序的其余部分无法使用,如何更改 public async Task GETFROMDB() {
public class MyDataClass
{
public string MSG { get; set; }
public int Id { get; set; }
}
然后我尝试删除所选项目(按钮1\u单击事件)
在任务中创建数据列表时出现的问题,使程序的其余部分无法使用,如何更改
public async Task GETFROMDB()
{
int a = 1;
Database database = new Database(ApplicationData.Current.LocalFolder, "DictData.db");
await database.OpenAsync();
string query = "SELECT * FROM MyDICT";
Statement statement = await database.PrepareStatementAsync(query);
statement.EnableColumnsProperty();
ObservableCollection<MyDataClass> dataList = new ObservableCollection<MyDataClass>();
while (await statement.StepAsync())
{
rawData = string.Format(statement.Columns["value"]);
string[] sep = new string[] { "\r\n" }; //Splittng it with new line
string[] arrData = rawData.Split(sep, StringSplitOptions.RemoveEmptyEntries);
foreach (var d in arrData)
{
dataList.Add(new MyDataClass() { MSG = d, Id= a });
a++;
}
}
MyDict.ItemsSource = dataList;
}
公共异步任务GETFROMDB()
{
INTA=1;
数据库=新数据库(ApplicationData.Current.LocalFolder,“DictData.db”);
wait database.OpenAsync();
string query=“从MyDICT中选择*”;
语句=等待数据库.PrepareStatementSync(查询);
语句。EnableColumnsProperty();
ObservableCollection dataList=新的ObservableCollection();
while(wait语句.stepsync())
{
rawData=string.Format(statement.Columns[“value”]);
string[]sep=newstring[]{“\r\n”};//用新行拆分它
string[]arrData=rawData.Split(sep,StringSplitOptions.removeMptyEntries);
foreach(arrData中的var d)
{
Add(新的MyDataClass(){MSG=d,Id=a});
a++;
}
}
MyDict.ItemsSource=数据列表;
}
您似乎试图从全新的集合中删除该项目-尝试将其从列表框数据绑定到的集合中删除。尝试使用按钮数据上下文 像这样 在单击处理程序中
private void ButtonClick(object sender, RoutedEventArgs e)
{
Button btn = sender as Button;
if (btn != null)
{
MyDataClass item = btn.DataContext as MyDataClass;
dataList.Remove(item);
}
}
您可以在任务外部绑定到数据列表,并在任务中静态或引用数据列表吗 创建列表时:
static ObservableCollection<MyDataClass> dataList = new ObservableCollection<MyDataClass>();
MyDict.ItemsSource = dataList;
ObservableCollection<MyDataClass> dataList = new ObservableCollection<MyDataClass>();
MyDict.ItemsSource = dataList;
然后在中单击:
MyDataClass item = MyDict.SelectedItem as MyDataClass;
dataList.Remove(item);
或使其成功:
创建列表时:
static ObservableCollection<MyDataClass> dataList = new ObservableCollection<MyDataClass>();
MyDict.ItemsSource = dataList;
ObservableCollection<MyDataClass> dataList = new ObservableCollection<MyDataClass>();
MyDict.ItemsSource = dataList;
当然,您需要等待任务完成。现在,这不起作用。我创建了新的ObservableCollection,因为我的程序中没有它
public async Task GETFROMDB(ObservableCollection<MyDataClass> dataList)
{
int a = 1;
Database database = new Database(ApplicationData.Current.LocalFolder, "DictData.db");
await database.OpenAsync();
string query = "SELECT * FROM MyDICT";
Statement statement = await database.PrepareStatementAsync(query);
statement.EnableColumnsProperty();
while (await statement.StepAsync())
{
rawData = string.Format(statement.Columns["value"]);
string[] sep = new string[] { "\r\n" }; //Splittng it with new line
string[] arrData = rawData.Split(sep, StringSplitOptions.RemoveEmptyEntries);
foreach (var d in arrData)
{
dataList.Add(new MyDataClass() { MSG = d, Id= a });
a++;
}
}
}
MyDataClass item = MyDict.SelectedItem as MyDataClass;
dataList.Remove(item);