Silverlight 5 Expander中的ListBox绑定数据后就是不显示(本人已痛不欲生)

a8826251 2013-03-02 12:39:41
我用的是WCF Data Service
我有两个表对象,一个是产品类型(ProductType),一个是产品(Product),有外键关联
XMAL结构是ListBox->Expander->ListBox
Expander绑定的是ProductType,
EXpander的ContentTemplate中用的是ListBox,
意思是每个产品类型下的产品。
在我LoadProperty后,我将数据绑定在Expander下的ListBox中,Expander数据绑定(ProductType)没问题,但是ListBox里(Product)始终不显示数据,就是不显示啊不显示,我已经搞了3天了,我的痛啊

我是业余的求专业的大哥帮我打开心结



App.xaml代码:
<Application.Resources>
<DataTemplate x:Key="listboxexpander" >
<Grid>
<toolkit:Expander Header="{Binding Path=ProductTypeName}" >
<toolkit:Expander.ContentTemplate>
<DataTemplate>
<ListBox ItemsSource="{Binding Products}" DataContext="{Binding Products}" DisplayMemberPath="ProductName"/>
</DataTemplate>
</toolkit:Expander.ContentTemplate>
</toolkit:Expander>
</Grid>
</DataTemplate>
</Application.Resources>
MainPage.Xaml代码:
<Grid>
<ListBox Name="expandpanel" ItemTemplate="{StaticResource listboxexpander}" >
</ListBox>
</Grid>
...全文
401 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
a8826251 2013-03-04
  • 打赏
  • 举报
回复
引用 3 楼 homezzm 的回复:
在当前上下文中是否能获取"{Binding Products}"?把listBox单独拿出来是否可以正常显示数据?
单独拿出来是可以的,就是List->List 但是我想加个expander做导航管理啊,什么原因啊
  • 打赏
  • 举报
回复
在当前上下文中是否能获取"{Binding Products}"?把listBox单独拿出来是否可以正常显示数据?
a8826251 2013-03-04
  • 打赏
  • 举报
回复
引用 12 楼 lrw383302622 的回复:
<DataTemplate x:Key="listboxexpander" > <Grid> <toolkit:Expander Header="{Binding Path=ProductTypeName}"> <toolkit:Expander.Content>……
谢谢啊,可以了,结贴之前我想知道为什么我那样用不行呢,能告诉我吗?
lrw383302622 2013-03-04
  • 打赏
  • 举报
回复
<DataTemplate x:Key="listboxexpander" > <Grid> <toolkit:Expander Header="{Binding Path=ProductTypeName}"> <toolkit:Expander.Content> <ListBox ItemsSource="{Binding Productes}" DisplayMemberPath="ProductName"/> </toolkit:Expander.Content> </toolkit:Expander> </Grid> </DataTemplate>
a8826251 2013-03-04
  • 打赏
  • 举报
回复
Expander ex = sender as Expander; ProductTypes dc = ex.DataContext as ProductTypes ; if (oc != null) { DataTemplate dt = ex.ContentTemplate as DataTemplate; ListBox lb = dt.LoadContent() as ListBox; lb.DataContext = ex.DataContext; ObservableCollection<Products> oc = new ObservableCollection<Products>(); foreach (var item in dc.Products) { oc.Add(item.ProductName); } lb.ItemSource=oc; } 我曾经这样不绑定数据,展开时现加载值也是不显示
a8826251 2013-03-04
  • 打赏
  • 举报
回复
我这是第一次做silverlight 不知道该怎么继续排查问题了,黔驴技穷了
a8826251 2013-03-04
  • 打赏
  • 举报
回复
引用 8 楼 homezzm 的回复:
list中放list我做过,是可以的,但你这种测试方式有问题吧,数据一定没有问题,问题可能出现在你里面的list根本就没有获取到需要绑定的数据{Binding Products}
是啊,感觉就好像是listbox 没有获取到数据是的。List中放List我刚才测试没有问题
  • 打赏
  • 举报
回复
list中放list我做过,是可以的,但你这种测试方式有问题吧,数据一定没有问题,问题可能出现在你里面的list根本就没有获取到需要绑定的数据{Binding Products}
a8826251 2013-03-04
  • 打赏
  • 举报
回复
难道模板里这种嵌套会存在不显示的问题,可视层为什么不显示
a8826251 2013-03-04
  • 打赏
  • 举报
回复
引用 5 楼 homezzm 的回复:
目测好像是你的list中没有获取到数据源,在应用模板后在后台调试下看模板里面的list的数据源是否为空。
我是这么调试的 Expander ex = sender as Expander; ProductTypes oc = ex.DataContext as ProductTypes ; if (oc != null) { foreach (var item in oc.Products) { MessageBox.Show(item.ProductName.ToString()); } } 这段代码放在 Expander_Expanded方法下,点击Expander迭代此类型下所有产品的名字,是可以MessageBox出来的。
  • 打赏
  • 举报
回复
目测好像是你的list中没有获取到数据源,在应用模板后在后台调试下看模板里面的list的数据源是否为空。
a8826251 2013-03-03
  • 打赏
  • 举报
回复
来人解答啊啊
a8826251 2013-03-02
  • 打赏
  • 举报
回复
QQ号:372690614 盼回复

8,757

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧