怎么给LongListSelector的ItemSource赋值
如何给LongListSelector的ItemSource赋值
想要把选择好后的数据放到ItemSource中,但是数据类型总是出错,大家能帮忙看看嘛!
代码如下:
var selected = from c in mainItem group c by c.Content into n select new GroupingLayer<string, Item>(n);
this.LongList.ItemsSource =selected; //这句语句总是报错,报错提示为:
错误 2 无法将类型“System.Collections.Generic.IEnumerable<列表选择框ok.GroupingLayer<string,列表选择框ok.Item>>”隐式转换为“System.Collections.IList”。存在一个显式转换(是否缺少强制转换?) c:\users\bing\documents\visual studio 2012\Projects\列表选择框ok\列表选择框ok\MainPage.xaml.cs 31 40 列表选择框ok
但是写成this.LongList.ItemSource=(System.Collcetions.IList)selected;也出现了错误,错误如截图部分
不知道该怎么把数据放大ItemSource中区(我就是想把数据分个组让后放到ItemSouce中去,不知道该怎么改才好)
public partial class MainPage : PhoneApplicationPage
{
// 构造函数
public MainPage()
{
InitializeComponent();
List<Item> mainItem = new List<Item>();
for (int i = 0; i < 10; i++)
{
mainItem.Add(new Item() { Content = "A类别", Title = "测试A " + i.ToString() });
mainItem.Add(new Item() { Content = "B类别", Title = "测试B" + i.ToString() });
mainItem.Add(new Item() { Content = "C类别", Title = "测试C" + i.ToString() });
}
//使用Linq来查询List<Item>数据 按照Content来进行分组
var selected = from c in mainItem group c by c.Content into n select new GroupingLayer<string, Item>(n);
this.LongList.ItemsSource =selected;
}
}
public class GroupingLayer<TKey, TElement> : IGrouping<TKey, TElement>
{
//分组数据
private readonly IGrouping<TKey, TElement> grouping;
//初始化
public GroupingLayer(IGrouping<TKey, TElement> unit)
{
grouping = unit;
}
//唯一的键值
public TKey Key
{
get { return grouping.Key; }
}
public override bool Equals(object obj)
{
GroupingLayer<TKey, TElement> that = obj as GroupingLayer<TKey, TElement>;
return (that != null) && (this.Key.Equals(that.Key));
}
public IEnumerator<TElement> GetEnumerator()
{
return grouping.GetEnumerator();
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return grouping.GetEnumerator();
}
}
//List选项的类 Content表示类别 Title表示选项的标题
public class Item
{
public string Title { get; set; }
想要把选择好后的数据放到ItemSource中,但是数据类型总是出错,大家能帮忙看看嘛!
代码如下:
var selected = from c in mainItem group c by c.Content into n select new GroupingLayer<string, Item>(n);
this.LongList.ItemsSource =selected; //这句语句总是报错,报错提示为:
错误 2 无法将类型“System.Collections.Generic.IEnumerable<列表选择框ok.GroupingLayer<string,列表选择框ok.Item>>”隐式转换为“System.Collections.IList”。存在一个显式转换(是否缺少强制转换?) c:\users\bing\documents\visual studio 2012\Projects\列表选择框ok\列表选择框ok\MainPage.xaml.cs 31 40 列表选择框ok
但是写成this.LongList.ItemSource=(System.Collcetions.IList)selected;也出现了错误,错误如截图部分
public partial class MainPage : PhoneApplicationPage
{
// 构造函数
public MainPage()
{
InitializeComponent();
List<Item> mainItem = new List<Item>();
for (int i = 0; i < 10; i++)
{
mainItem.Add(new Item() { Content = "A类别", Title = "测试A " + i.ToString() });
mainItem.Add(new Item() { Content = "B类别", Title = "测试B" + i.ToString() });
mainItem.Add(new Item() { Content = "C类别", Title = "测试C" + i.ToString() });
}
//使用Linq来查询List<Item>数据 按照Content来进行分组
var selected = from c in mainItem group c by c.Content into n select new GroupingLayer<string, Item>(n);
this.LongList.ItemsSource =selected;
}
}
public class GroupingLayer<TKey, TElement> : IGrouping<TKey, TElement>
{
//分组数据
private readonly IGrouping<TKey, TElement> grouping;
//初始化
public GroupingLayer(IGrouping<TKey, TElement> unit)
{
grouping = unit;
}
//唯一的键值
public TKey Key
{
get { return grouping.Key; }
}
public override bool Equals(object obj)
{
GroupingLayer<TKey, TElement> that = obj as GroupingLayer<TKey, TElement>;
return (that != null) && (this.Key.Equals(that.Key));
}
public IEnumerator<TElement> GetEnumerator()
{
return grouping.GetEnumerator();
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return grouping.GetEnumerator();
}
}
//List选项的类 Content表示类别 Title表示选项的标题
public class Item
{
public string Title { get; set; }