モダン UI チャート コントロールにデータをバインドできません。
XAML要素を作成してそれにバインドする一般的な方法では使用していません。私の目標は、要素を作成してメモリにレンダリングし、要素の画像を取得することです。
以下の私のコードは、コンテンツの作成と追加用であり、画像のレンダリングは正常に機能します。
void generateGraphImg()
{
PieChart pc = new PieChart();
ObservableCollection<TestClass> Errors = new ObservableCollection<TestClass>();
Errors.Add(new TestClass() { Category = "Globalization", Number = 75 });
Errors.Add(new TestClass() { Category = "Features", Number = 2 });
Errors.Add(new TestClass() { Category = "ContentTypes", Number = 12 });
Errors.Add(new TestClass() { Category = "Correctness", Number = 83 });
Errors.Add(new TestClass() { Category = "Best Practices", Number = 29 });
ChartSeries Charts = new ChartSeries();
Charts.SeriesTitle = "Errors";
Charts.DisplayMember = "Category";
Charts.ValueMember = "Number";
Charts.ItemsSource = Errors;
pc.Series.Add(Charts);
pc.ChartTitle = "Minimal Pie Chart";
pc.ChartSubTitle = "Chart with fixed width and height";
makeImgFromControl(pc, @"C:\Modern UI IMG\img.bmp");
}
void makeImgFromControl(UIElement control, string saveTo)
{
Viewbox viewbox = new Viewbox();
viewbox.Child = control; //control to render
viewbox.Measure(new System.Windows.Size(200, 200));
viewbox.Arrange(new Rect(0, 0, 200, 200));
viewbox.UpdateLayout(); //On PiePiece DrawGeometry() happens here
RenderTargetBitmap render = new RenderTargetBitmap(500,500, 150, 150, PixelFormats.Pbgra32);
render.Render(viewbox);
PngBitmapEncoder encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(render));
using (Stream s = File.Create(saveTo))
{
encoder.Save(s);
}
}
データのバインディングはレンダリングされませんが、タイトルとサブタイトルはうまくレンダリングされますが、その理由は何ですか?