【问题标题】:Get "is ready" signal after rendering of WPF toolkit chart渲染 WPF 工具包图表后获取“准备就绪”信号
【发布时间】:2011-11-10 12:54:19
【问题描述】:

我正在使用 WPF 工具包的图表工具。 创建图表后,我希望获得该图表的快照,而不是可视化该图表。我的问题是我不知道渲染过程何时完成,所以我可以创建一个快照。 我尝试监听“LayoutUpdated”事件,但图表更新非常频繁。

谁能告诉我如何判断图表是否完全渲染?

【问题讨论】:

  • 能否在 base.Render() 或等效项完成后不继承图表、覆盖渲染并调用自定义事件?
  • 只有 OnRender 可以被覆盖。但是处理程序是在图表初始化之后调用的,而不是在内容更改之后。
  • @flashflail,你解决了吗?我遇到了完全相同的问题...

标签: c# wpf charts wpftoolkit


【解决方案1】:

您可以在后面的代码中使用 Dispatcher:

this.Dispatcher.BeginInvoke(DispatcherPriority.Loaded, new Action(() =>
    {
        // code in here should be executed after chart has been rendered.
    }
));

【讨论】:

  • 对我不起作用。 BeginInvoke 中的代码在图表呈现之前执行。我也用 DispatcherPriority.SystemIdle 试过了,也没用。
  • 不,对我也不起作用。我以为会,但我下载了工具包图表并尝试了它,你瞧,在图表呈现之前执行的方法。虽然它确实适用于其他控件,但我认为它不起作用的原因是图表使用的动画。如果有任何方法可以禁用这些,你可能会有更多的运气。 This post has some info that might help
【解决方案2】:

Loaded 事件听起来像你需要的。

MyChart.Loaded += (sender, e) =>
{
    // chart has been loaded but not yet rendered
}

其中“MyChart”是您在 XAML 中为图表指定的名称。

我不确定这与频繁更新的效果如何,但此链接似乎表明 http://blogs.msdn.com/b/mikehillberg/archive/2006/09/19/loadedvsinitialized.aspx 这就是您要查找的内容。

【讨论】:

  • 感谢您的回复。我将事件处理程序附加到加载的事件,但它从未被触发。可能是图表没有可视化的原因吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-15
  • 1970-01-01
  • 1970-01-01
  • 2012-10-16
  • 1970-01-01
  • 1970-01-01
  • 2019-10-09
相关资源
最近更新 更多