如何在MVVM中更新用户控件(图表)

时间:2013-08-27 11:05:09

标签: wpf mvvm charts

我有一个嵌入在usercontrol中的图表

  

PlotControl.xaml(PlotControl.xaml.cs)

此绘图控件用于MVVM中的View。

现在!当我更新PlotControl的UI时(例如我在图表上绘制垂直和水平标记),这些更新在View上不可见(除非我双击View或执行Minimize-Maximize窗口)。

是否有办法在View上自动更新更新后的用户界面?

查看代码如下:

<Grid Margin="4">
   <nms:PlotControl  x:Name="PlotControl" Margin="10,10" DockPanel.Dock="Right" />
</nms:PlotControl>
来自PlotControl.xaml.cs代码的

代码段如下:

ChartPanel cpnl = new ChartPanel();
chart.View.Layers.Add(cpnl);

ChartMarker rightVerticalMarker = new ChartMarker(chart, MarketType.RightVertical);
rightVerticalMarker.DataPoint = new Point(30, double.NaN);

cpnl.Children.Add(rightVerticalMarker);
cpnl.UpdateLayout();
chart.UpdateLayout();

ChartMarker只是由enum MarketType定义的水平(或垂直)线。

注意:我在SO的两天内一直在寻找这个问题,但我找不到解决方案。

1 个答案:

答案 0 :(得分:0)

可以通过Arrange方法强制更新。这是我发现的,它解决了我的问题。

Size userControlSize = this.RenderSize; //original size of userControl
Size chartSize = chart.RenderSize;    // original size of chart
chart.Arrange(chart.View.PlotRect); // forcing layout elements on chart
chart.Arrange(new Rect(chartSize)); // setting the chart size to original value
Arrange(new Rect(userControlSize)); // setting the userControl size to original value