打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
在使用 ItemsSource 之前,项集合必须为空
请问有谁遇到过这样的问题吗?
在使用 ItemsSource 之前,项集合必须为空。
是这样子的,我在界面上放一个listbox,绑定从数据库中查询出来的数据集,
用于显示用户列表
<ListBox x:Name="listBoxEngineer" ItemTemplate="{StaticResource EngineerItemTemplate}"
ItemsSource="{Binding Tables[0]}">
现在我想双击某个用户(既ListBoxItem),弹出对话框(跟QQ一样)于是我在上面代码中加上列表项的双击事件
<ListBoxItem MouseDoubleClick="ListBoxItem_MouseDoubleClick"></ListBoxItem>
但是就出现了上面的错误“在使用 ItemsSource 之前,项集合必须为空”,请问哪位大侠知道怎么解决这个问题 更多 分享到:
对我有用[0]丢个板砖[0] |举报 | 管理
回复次数:8
关注
cf_nxcxy
cf_nxcxy
本版等级:
得分:10 回复于: 2012-06-05 13:37:38
先给清空了
ItemsSourceId="";
类似这种:
dataGridView1.DataSourceId="";
dataGridView1.DataSource=数据源;
dataGridView1.DataBind();
绑定前先清空
对我有用[0]丢个板砖[0] |举报 | 管理
关注
lijielongxiao
lijielongxiao
本版等级:
得分:0 回复于: 2012-06-05 14:09:36
谢谢你的回复,但是我这里是用WPF技术做的,ListBox好像并没有ItemSourceId这个属性
对我有用[0]丢个板砖[0] |举报 | 管理
关注
qing2005
qing2005
本版等级:
得分:10 回复于: 2012-06-05 15:44:29
WPF中ListBox使用的ItemsSource一般都不能为空,但是使用的方式和你的代码不同。一般都采用MVVM的绑定方式,ListBox的数据源ItemsSource绑定到一个集合上,然后设置SelectedItem="{Binding xxxx,Model=TwoWay}的方式。估计你使用的集合不正确,并且保证具有get方法和公有访问权限。
见示例:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:loc="clr-namespace:WpfApplication1" x:Name="win"
Title="MainWindow" Height="218" Width="211">
<Window.Resources>
<DataTemplate DataType="{x:Type loc:User}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0">
(<TextBlock Grid.Column="1" Text="{Binding Id}" />)
</TextBlock>
<TextBlock Grid.Column="1" Text="{Binding Name}" Margin="10,2,0,2" />
</Grid>
</DataTemplate>
</Window.Resources>
<Grid>
<ListBox ItemsSource="{Binding Users,ElementName=win}"
SelectedItem="{Binding SelectedUser,Mode=TwoWay,ElementName=win}"
MouseDoubleClick="ListBox_MouseDoubleClick" />
</Grid>
</Window>
public partial class MainWindow : Window {
public MainWindow() {
Users = new List<User> {
new User{Id="1001",Name="User1001",Group="Friend"},
new User{Id="1002",Name="User1002",Group="Friend"},
new User{Id="1003",Name="User1003",Group="Default"},
};
InitializeComponent();
}
public List<User> Users { get; private set; }
public User SelectedUser { get; set; }
private void ListBox_MouseDoubleClick(object sender, MouseButtonEventArgs e) {
ListBox lst = sender as ListBox;
if (lst.SelectedItem != null) {
MessageBox.Show(SelectedUser.Id);
}
}
}
public class User{
public string Id { get; set; }
public string Name { get; set; }
public string Group { get; set; }
}
对我有用[0]丢个板砖[0] |举报 | 管理
关注
lijielongxiao
lijielongxiao
本版等级:
得分:0 回复于: 2012-06-06 10:30:35
To qing2005
你的代码跟我的差不多,区别在于我是查询数据库返回一个DataSet绑定上去,而你是自定义的一个User类集合,所以我并没有你所谓的“保证具有get方法和公有访问权限”这个问题,不过你的代码还是给了我一些提示,就是编写ListBox的双击事件,然后再判断双击的时候是否选中项,谢谢
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
一步一步学Silverlight 2系列(14):数据与通信之WCF
WPF 数据绑定实例一
WPF之DataTemplate的使用
WPF 4 DataGrid 控件(基本功能篇)
WPF之XAML
WPF调用线程
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服