С вашим CollectionView
на месте вы можете привязать к свойству Groups
, я никогда не использовал его, попробую и уточню, если возможно ...
Править: Хорошо, вот один из способов сделать это:
Данные, которые вы привязываете к , должны быть CollectionView.Groups
, CollectionView
должно быть определено так:
CollectionView view = (ListCollectionView) CollectionViewSource.
GetDefaultView(LabelData);
view.GroupDescriptions.Add(new PropertyGroupDescription("Name"));
Затем вы можете привязать к соответствующим свойствам CollectionViewGroup
в коде, вероятно, вам нужно:
ItemCount
Name
При этом ваше оригинальное связывание должно работать.
Примечание. Вы передаете только одно значение преобразователю ItemCount, поэтому оно должно выглядеть следующим образом:
public class CountToFontSizeConverter : IValueConverter
{
#region IValueConverter Members
public object Convert(object value, Type targetType, object parameter,
CultureInfo culture)
{
const int minFontSize = 6;
const int maxFontSize = 38;
const int increment = 3;
if ((minFontSize + (int)value + increment) < maxFontSize)
{
return (double)(minFontSize + (int)value + increment);
}
return (double)maxFontSize;
}
public object ConvertBack(object value, Type targetType,
object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
#endregion
}
Редактировать: Дополнительные пояснения ...
Просто добавьте CollectionView
к вашему ViewModel
как свойство и создайте его в конструкторе:
public class TagCloudViewModel//:INotifyPropertyChanged
{
public ObservableCollection<AggregatedLabelModel> AggregatedLabels
{get; set;}
public CollectionView AggregatedLabelsView {get; set;} // <-This...
public TagCloudViewModel()
{
var data = new DataAccess();
AggregatedLabels = data.GetData();
//...and this:
AggregatedLabelsView = (ListCollectionView)CollectionViewSource.
GetDefaultView(AggregatedLabels);
AggregatedLabelsView.GroupDescriptions.Add(
new PropertyGroupDescription("Name"));
}
}
Затем привязать к AggregatedLabelsView.Groups
.