gpt4 book ai didi

wpf - 在WPF中构建标签云

转载 作者:行者123 更新时间:2023-12-01 23:11:28 25 4
gpt4 key购买 nike

我正在尝试基于 an existing implementation 在 WPF 中构建标签云[Download Source ]。我不完全理解实现,我的问题是,我不想将 FontSize 绑定(bind)到集合中的项目数,而是想将其绑定(bind)到类中包含的其他一些值。所以在这一部分中,

FontSize="{Binding Path=ItemCount, Converter={StaticResource CountToFontSizeConverter}}"

我想将 FontSize 绑定(bind)到其他内容。我怎么做? ItemCount 属于哪里?

谢谢

最佳答案

ItemCount 属于 group在从该标签生成的 Collection View 内。

例如如果我有一个列表

A A B B B C

我将它们分组,得到:

Group A : ItemCount = 2
Group B : ItemCount = 3
Group C : ItemCount = 1

标签云的全部意义在于绑定(bind)到该属性,因为您希望可视化某个标签的使用频率。

<小时/>

为了回复您的评论,基本设置应该如下所示:

<ItemsControl ItemsSource="{Binding Data}">
<ItemsControl.Resources>
<vc:CountToFontSizeConverter x:Key="CountToFontSizeConverter"/>
</ItemsControl.Resources>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" Margin="2"
FontSize="{Binding Count, Converter={StaticResource CountToFontSizeConverter}}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>

我假设您的数据对象类公开属性 NameCount,以确保大小随着数据对象类需要的计数增加而变化实现INotifyPropertyChanged ,这就是全部内容。

public class Tag : INotifyPropertyChanged
{
private string _name = null;
public string Name
{
get { return _name; }
set
{
if (_name != value)
{
_name = value;
OnPropertyChanged("Name");
}
}
}

private int _count = 0;
public int Count
{
get { return _count; }
set
{
if (_count != value)
{
_count = value;
OnPropertyChanged("Count");
}
}
}

//...

public event PropertyChangedEventHandler PropertyChanged;

protected virtual void OnPropertyChanged(string propertyName)
{
if (this.PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}

关于wpf - 在WPF中构建标签云,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5848312/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com