Tag: listbox

如何检查项目是否已在ListBox中

假设我有这样定义的视图模型 public class DataVM { public int number { get; set; } public string name { get; set; } } 然后我的代码中的某个地方我想这样填充DataListbox : List data = new List(); for (int i = 0; i < data.Count; i++) { if (DataListbox.Items.Contains(data[i])) { //do nothing } else { DataListbox.Add(data[i]); } } 但是,此行if (DataListbox.Items.Contains(data[i]))总是计算为false,即使该项已经在DataListbox并且它应该计算为true。 我不明白为什么它不起作用。 我在这里做错了什么,我该如何解决?

ListBox,实现相同接口的不同对象的列表

我有两个对象:User和Client,都实现了接口IMember interface IMember { int Id { get; set; } string Name { get; set; } } 在表单中我设置了ListBox数据源: myListBox.DisplayMember = “Name”; myListBox.ValueMember = “Id”; myListBox.DataSource = membersList; // List 并且发生了奇怪的事情;)当我运行程序时,第一个对象(正是这种类型的用户)正确显示(Adrian Serafin)和其他对象,其类型的联系人显示如下: MyProject.Client#20 MyProject.Client#40 至于显示是对它们的ToString()调用。 我不能使用在ListBox中实现相同接口的不同对象列表作为数据源,或者我在这里犯了一些错误?

如何从会话对象将ListBox绑定到DataTable?

我有一个会话对象,其中包含我上一页的DataTable,我想将此DataTable绑定到ListBox。 我这样做了: protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { if (Session[“bestStocks”] !=null) { DataTable dt = new DataTable(); dt = (DataTable)Session[“bestStocks”]; DataView dv = new DataView(dt); BestStockslb.DataSource = dt; BestStockslb.DataBind(); } } } 我得到这个结果: 有什么建议吗? 谢谢,liron

更改项目显示方式WPF列表框

我有一个显示ListBox的WPF窗口。 我已经更改了ListBox的项目模板,以便列表框显示可以选择的矩形项目。 现在我想修改ListBox的ItemsPanelTemplate以便项目以网格显示,而不是垂直或水平列表。 具体来说,我希望第一个项目位于ListBox右上角,然后第二个项目位于其下方,第三个项目位于下方,直到下一个项目的高度使项目列高于ListBox本身的高度。 此时,它应该直接在添加的第一个项目的右侧开始第二列。 如果组合的所有列的总宽度大于ListBox宽度,则应显示水平滚动条。 有没有办法通过修改ItemsPanelTemplate来获得该效果,还是需要扩展ListBox类本身? 在任何一种情况下,我将如何得到它? 谢谢你的帮助!

ListBox没有获取选定的项目

我有一个ListBox,我将ListItems添加到代码隐藏中。 我遇到的问题是ListBox没有看到所选项目。 我根据用户从DropDownList中选择的内容动态填充ListBox,因此DropDownList将AutoPostBack设置为true。 我认为这是以某种方式导致问题。 我的SelectedIndexChanged方法,只要选择了DropDownList中的项,就会调用一个名为PopulateListBox的方法。 以下是这些方法的样子: protected void SelectedIndexChanged(object sender, EventArgs e) { string typeStr = type.SelectedItem.Text; MyType = Api.GetType(typeStr); PopulateListBox(); } private void PopulateListBox() { listbox.Items.Clear(); foreach (PropertyInfo info in MyType.GetProperties()) listbox.Items.Add(new ListItem(info.Name)); } 对于它的价值,这里是DropDownList和ListBox: 我想要做的是在单击提交按钮时添加一个字符串列表(作为所选项的字符串)作为会话变量。 将List添加到会话后,该按钮将重定向到新页面。 在调试器中,字符串列表在我将其添加到会话时是空的。 listbox.GetSelectedIndices()返回任何内容。 更新 如果我没有在DropDownList中进行更改,我可以访问所选项目。 ListBox最初是在页面加载时填充的,如果我进行选择,则会识别它们。 如果我从DropDownList中选择一些内容并重新填充ListBox,则无法识别选择。 我的Page_Load方法只做两件事。 它初始化我的Api变量并调用PopulateDropDown ,如下所示: private void PopulateDropDown() { foreach (Type t in […]

为什么WPF列表框会在鼠标按钮上改变选择而不是按下按钮?

我之前从未注意到这一点,但是当鼠标停止时,WPF ListBox似乎更改了其SelectedItem,但尚未发布。 作为一个简单的例子,只需创建一个包含多个ListBoxItem的简单ListBox,如下所示: Hello World ListBox Test 启动你的应用程序,按下鼠标按钮(不要释放它!)并移动鼠标。 SelectedItem将随着鼠标移动而改变。 这说明了一个更大的问题(对我来说,至少), 一旦你按下鼠标就会设置ListBox的SelectedItem,而不是在鼠标出现时设置。 通常这不是问题,但在我的情况下,我想在我的ListBox中的项目上进行拖放操作,而不会明确选择项目。 我想我唯一的办法就是构建一个自定义的ItemsControl或Selector,其选择风格类似于ListBox,所以我的问题更多,为什么ListBox以这种方式工作? 有没有人对此有任何见解?

如何获取ListBox中的项目索引?

我正在向ListBox添加项目,如下所示: myListBox.Items.addRange(myObjectArray); 我还想选择以下添加的一些项目: foreach(MyObject m in otherListOfMyObjects) { int index = myListBox.Items.IndexOf(m); myListBox.SelectedIndices.Add(index); } 但index总是-1 。 是否有不同的方法来获取ListBox中的对象的索引?

如何在列表框wpf中获取多个选定的项目?

我对如何从wpf中的列表框中检索多个选定值感到困惑。 在XAML中,我有以下列表框,选择模式为multiple。 我现在如何检查foreach循环? foreach (ListItem li in listBox1.Items) { ?? // how to check li is selected or not }

在Windows Phone上实现可滚动表

我需要为电视指南创建一个应用程序。 要求是UI必须是您在此处可以看到的副本: raspored.bnet.hr 。 如您所见,有很多数据。 所以,基本上它将是一个大型可滚动表。 由于Windows Phone上没有这样的UI控件,我发现最好的方法是创建一个垂直列表框,其中包含水平列表框。 这一切都很好,我可以创建它。 但是,为了使其行为像表格,我还需要使这些水平列表框同步滚动,而不是一次滚动一行。 然后我在水平列表框上禁用水平滚动,并在父(垂直)列表框上启用它,当它给出结果我想实现一个大问题 – UI虚拟化。 我知道ListBox默认启用了UI虚拟化,我可以在垂直列表框上滚动时看到它,但是当我在水平列表框上禁用水平滚动时,性能非常差,有时会出现OutOfMemoryException。 我理解为什么会发生这种情况,因为当我禁用水平滚动时,那些列表框不再知道哪些项目在屏幕上,所以将它们全部加载到内存中。 我还尝试了在每个列表框上留下滚动,以便他们具有UI虚拟化,然后将ScrollViewer放在它们之上。 然后我尝试在scrollviewer上监听Manipulation事件,并根据需要以progamatically方式滚动所有列表框。 这不起作用,首先ManipulationDelta事件似乎没有频繁发生以使滚动顺利,我认为在~180列表框上调用ScrollToHorizo​​ntalOffset可能会出现性能问题。 我也尝试过WP8中的LongListSelector,因为我读到它有更好的UI虚拟化,应该用来代替ListBox。 这个问题是我不能让它水平滚动。 有可能吗? 我试图将它包装到ScrollViewer中,它可以水平滚动并且它正常工作,但前提是我在LLS上设置了固定宽度。 我也试过Telerik的RadDataBoundListBox并且问题类似,我不能在同一个列表框上同时获得水平和垂直滚动。 所以我只能得到每个列表自己滚动。 有人可以告诉我他们是否有类似的情况以及解决这个问题的最佳方法是什么? 我相信我不是唯一一个有这个要求来实现大型可滚动表的人。 谢谢 更新:我只是告诉你我没有找到一种正确的方法来实现它,而是我用HTMLB和WebBrowser控件完成了它。 似乎IE已经实现了UI虚拟化,因此它可以很好地处理大页面。

WPF ListBox按钮所选项目

我有一个带有一些文本块和一个按钮的列表框 – 在按钮的代码后面,它调用一个传递当前所选列表框项的方法,这很有效。 问题是,当我选择一个项目,然后单击另一个项目上的按钮时,它不会更新“SelectedItem”属性 – 是否有一种方法Xaml或C#,我可以强制按钮单击以选择父ListBoxItem? XAML