Tag: 列表框

延迟加载虚拟化列表框中的图像

我试图以异步方式为Listbox中的每个项目延迟加载缩略图。 由于列表框是虚拟化的,因此只有当项目位于显示端口或靠近显示端口时,才会调用Thumbnail属性的getter。 public BitmapSource Thumbnail { get { TriggerLoad(); return _thumbnail; } } 我正在等待在TriggerLoad函数中加载Thumbail的昂贵操作,但UI不是非常敏感,尤其是当您尝试快速滚动大型项目列表时。 private async void TriggerLoad() { if (!LoadTriggered) { LoadTriggered = true; var cacheItem = _cache[key] as CacheItem; if (cacheItem != null) await LoadBitmapFromCache(cacheItem); // returns a Task else await LoadBitmapFromService(Id); // returns a Task } } 在这里找到了类似的问题,但它不是关于将项目加载到列表框。 有没有更好的方法来延迟加载只绑定到Listbox的数据的一部分? 编辑:我尝试了PriorityBinding和IsAsync选项,滚动并不比我目前的解决方案更好。

右键单击以选择ListBox中的项目

我正在尝试制作一个项目列表,您可以通过右键单击并启用上下文菜单来执行多项操作。 我已经完成了,没有任何问题。 但我想拥有它,以便当您右键单击某个项目而不是选择当前项目时,选择鼠标所在的项目。 我已经研究了这个和其他相关问题,并且我尝试使用indexFromPoint(我通过我的研究发现),但每当我右键单击某个项目时,它总是只清除所选项目而不显示上下文菜单,因为我设置它,以便它没有出现,如果没有选定的项目。 这是我目前使用的代码: ListBox.SelectedIndex = ListBox.IndexFromPoint(Cursor.Position.X, Cursor.Position.Y);

将字典绑定到WPF ListBox

给定的dictionary.Values ,你如何绑定dictionary.Values到WPF ListBox,以便项目使用.Name属性? struct Drink { public string Name { get; private set; } public int Popularity { get; private set; } public Drink ( string name, int popularity ) : this ( ) { this.Name = name; this.Popularity = popularity; } }

取消选择具有扩展选择模式的WPF列表框

我有一个带扩展选择模式的简单列表框。 选择工作几乎完全正常,就像它在资源管理器中工作。 但取消选择并没有真正发挥作用。 我想要的是当我点击列表框中元素范围之外的东西时,我希望取消选择所有元素。 默认情况下,我似乎没有这样做,我做了一个涉及selectionchanged和mouseup的黑客攻击来破解它。 但必须有更好的方法。 有任何想法吗?

如何在c#winforms应用程序中获取列表框项目的“密钥”?

我正在编写一个winforms应用程序,用户从列表框中选择一个项目并编辑构成关联对象一部分的一些数据。 然后将编辑从对象列表应用于基础文件。 在ASP.Net中,为列表项分配不同的系统值而不是用户看到的显示文本是微不足道的。 在winforms应用程序中,您必须将每个项目的“显示成员”和“有价值成员”设置为稍微复杂一些(而不是互联网上相关的)过程。 我已经这样做了。 在调试模式中,我已经确认每个项目现在都有一个值,即显示成员(用户看到的“友好”字符串)和一个键,值成员,用于保存要更新数据的哈希表对象的键。存在。 因此,当用户选择一个字符串来编辑程序时,应该将“密钥”传递给哈希表,将对象拉出并允许在其上进行编辑。 赶上? 我看不出任何明显的方式告诉程序查看项目的值成员。 我天真地期望它填充列表框的“SelectedValue”属性,但到目前为止这太简单了。 那我到底怎么去列表项值?

WPF ListBox没有使用ItemsSource更新

我认为在WPF设置中应该是简单的双向数据绑定,但是当集合发生变化时,列表框(目标)不会更新。 我正在以编程方式设置ListBox的ItemsSource: lstVariable_Selected.ItemsSource = m_VariableList; ListBox声明如下: 当我最初设置ItemsSource时,ListBox(当时不可见)获取其项目集。 但是,如果我查看ListBox,那么更新似乎就此停止了。 然后我可以从m_VariableList集合中删除一个项目,它不会从ListBox中消失。 同样,如果我添加一个,它就不会出现。 是什么赋予了?

LIstbox选择项目内容到文本块

我确信这有一个简单的解决方案,但我现在似乎无法找到它。 我试图使用下面的代码将文本块中的选择列表框的内容显示为文本。 private void SelectionToText(object sender, EventArgs e) { ListBoxItem selection = (ListBoxItem)TextListBox.SelectedItem; selectionText.Text = “This is the ” + selection; } 由于某种原因,只显示文本块 “这是System.Windows.Controls.ListBoxItem” 我最初认为这是因为我没有转换为字符串,但这也没有用。 有什么建议?

将项目从一个列表框移动到另一个列表框

我想将项目从一个列表视图移动到另一个列表视图。 将它们添加到第二个可以工作,但移动的条目根本不会被删除。 private void MoveSelItems(ListBox from, ListBox to) { for (int i = 0; i < from.SelectedItems.Count; i++) { to.Items.Add(from.SelectedItems[i].ToString()); } from.Items.Remove(to.SelectedItem); } 我正在使用C#/ Winforms / -NET 3.5

使用C#更改WPF Listbox SelectedItem文本颜色和高亮/背景颜色

我试图在运行时更改突出显示的(选定的)颜色和wpf列表框的突出显示的文本颜色。 我尝试创建一个样式并应用如下: Style s = new Style(typeof(ListBox)); s.Resources.Add(SystemColors.HighlightBrushKey, Setting.ListSelectedColor); s.Resources.Add(SystemColors.HighlightTextBrushKey, Setting.ListSelectedTextColor); lstGames.Style = s; 但这似乎什么都不做。 有没有办法实现这个目标? 编辑: 根据建议,我尝试使用DynamicResources来实现这一目标,但到目前为止,这还没有成功。 我的代码: DYNAMICRESOURCES 列表框 在C#中应用资源 this.Resources[“ListSelectedColor”] = SETING.ListSelectedColor.Color; this.Resources[“ListTextSelectedColor”] = SETTING.ListSelectedTextColor.Color;

如何在C#WinForms中对Listbox / ListView行的部分进行着色?

有没有办法为ListBox项目的部分(不仅是整行)着色? 例如,列表框项由5个单词组成,只有一个是彩色的,或者是5个中的3个。 有没有办法对ListView做同样的事情? (我知道ListView可以按列着色,但我希望在一列中有多种颜色)。 我只对免费解决方案感兴趣,并且希望它们不会很难实现或改变当前的使用情况(引入彩色ListBox代替正常情况的努力最少)。 带着敬意, 疯狂的男孩