CollectionView クラスは、.NET と類似の ICollectionView インタフェースを介してグループ化をサポートしています。グループ化を有効にするには、1 つ以上の GroupDescription オブジェクトを CollectionView.GroupDescription プロパティに追加します。GroupDescription オブジェクトは柔軟であり、値またはグループ化関数に基づいてデータをグループ化できます。次のコードは GroupChanged イベントと SortChanged イベントを使用して、Sunburst チャートでグループ化操作を実行します。
次の図は、Sunburst チャートコントロールでグループ化を設定する方法を示します。
次のコード例は、C# と XAML を使用してこれらのプロパティを設定する方法を示します。この例では、「クイックスタート」セクションで作成したデータを使用します。
CS |
コードのコピー
|
---|---|
public partial class ViewController : UIViewController { private C1CollectionView<Item> cv; public ViewController(IntPtr handle) : base(handle) { } public override void ViewDidLoad() { base.ViewDidLoad(); sunburst = new C1Sunburst(); sunburst.Binding = "Value"; sunburst.BindingName = "Year,Quarter,Month"; sunburst.ToolTipContent = "{}{name}\n{y}"; sunburst.DataLabel.Position = PieLabelPosition.Center; sunburst.DataLabel.Content = "{}{name}"; cv = DataService.CreateGroupCVData(); this.Add(sunburst); cv.GroupChanged += View_GroupChanged; cv.SortChanged += Cv_SortChanged; SortDescription yearSortDescription = new SortDescription("Year", SortDirection.Ascending); SortDescription quarterSortDescription = new SortDescription("Quarter", SortDirection.Ascending); SortDescription monthSortDescription = new SortDescription("MonthValue", SortDirection.Ascending); SortDescription[] sortDescriptions = new SortDescription[] { yearSortDescription, quarterSortDescription, monthSortDescription }; cv.SortAsync(sortDescriptions); } private void Cv_SortChanged(object sender, System.EventArgs e) { GroupDescription yearGroupDescription = new GroupDescription("Year"); GroupDescription quarterGroupDescription = new GroupDescription("Quarter"); GroupDescription monthGroupDescription = new GroupDescription("MonthName"); GroupDescription[] groupDescriptions = new GroupDescription[] { yearGroupDescription, quarterGroupDescription, monthGroupDescription }; cv.GroupAsync(groupDescriptions); } private void View_GroupChanged(object sender, System.EventArgs e) { this.sunburst.ItemsSource = cv; CGRect rect = new CGRect(this.View.Frame.X, this.View.Frame.Y + 80, this.View.Frame.Width, this.View.Frame.Height - 80); sunburst.Frame = new CGRect(rect.X, rect.Y, rect.Width, rect.Height - 10); } public override void ViewDidLayoutSubviews() { base.ViewDidLayoutSubviews(); sunburst.Frame = new CGRect(this.View.Frame.X, this.View.Frame.Y, this.View.Frame.Width, this.View.Frame.Height); } |