ItemCount
屬於group在從該Tag生成的集合視圖內。
例如如果我有一個列表
AABBBC
而且我組他們我得到:
A組:ItemCount中= 2
B組:ItemCount中= 3
C組: ItemCount = 1
標籤雲的整個要點是綁定到那個屬性,因爲你想要顯示某個標籤被使用的頻率。
爲了迴應您的意見,裸骨設置應該是這樣的:
<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>
我假設你的數據對象類公開屬性Name
和Count
,以確保隨着數量的增加,數據對象類需要實現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));
}
}
}
是的,但我已經有我的數據,我無法數數。我所擁有的更像是一個string-int類型的鍵值列表,我想用一個標籤雲來顯示帶有FontSize字符串的int值。 – user579674 2011-05-01 12:49:40
然後你完全沒有使用該實現。你可以把它放到一個ItemsControl中並對其進行模板化。那麼,至少你不需要重寫轉換器,但是所有的分組魔法都是毫無意義的。 – 2011-05-01 12:52:32
也許這是真的。有了您的建議,標籤雲仍然能夠隨列表更改而動態更新?你能解釋一下怎麼做嗎? – user579674 2011-05-01 12:57:18