从字典中分割和显示内容
本文关键字:显示 分割 字典 | 更新日期: 2023-09-27 18:24:58
通过我的初始程序代码,我已经能够生成一定长度(大部分为3)的{string, int}
的dictionary
。
在我的应用程序中,我必须显示由semi-colon
分隔的字符串,当悬停在某个字符串上时,它应该将字符串的相应int显示为某种tooltip
我的想法是显示标签(等于字典中的字符串数),从字典的键中提取每个标签的内容,并显示相应值对中的工具提示。
虽然,我能够如上所述生成这些标签,但我不确定,我应该如何以Label1 Content ; Label2 Content ; Label3 Content
这样的方式显示它们
这是做这件事的正确方法吗?根据上面的布局,标签应该如何显示(在堆栈面板或其他地方?如果我将标签设置为堆栈面板的子级,这些标签将如何用;
分隔)。我不太确定。
您将希望使用ItemsControl
,其ItemsPanel
设置为StackPanel
,Orientation
为Horizontal
。
看看这里-使用不同的模板为WPF项目控制中的最后一个项目。
这显示了XAML中的一个解决方案,该解决方案允许您在ItemsControl
中的最后一项后面省略分号。
您可能希望做的另一件事是将字典转换为"Item"类型或类似类型的ObservableCollection
,这意味着您可以在ItemControl
模板绑定中使用属性名称,这更简洁。类似于:
var items = dictionary.Select(kv => new Item { Name = kv.Key, Value = kv.Value });
this.Items = new ObservableCollection<Item>(items);
其中Items
是ObservableCollection<Item>
类型,Item
定义为:
public class Item
{
public string Name { get; set; }
public int Value { get; set; }
}
请注意,如果您在构造函数以外的任何对象中实例化ObservableCollection
,那么您的Items
属性设置器应该调用PropertyChanged
事件,以便向UI通知更改。
我不知道你正在渲染多少个项目,但你也可以使用WrapPanel
,这将允许Label
在达到一定宽度后进行包装。请注意,在WPF中实现的WrapPanel
并没有虚拟化,因此它对大量项目的性能不会很好。