我有一个带有网格作为内容面板的usercontrol,它从datatemplate加载其内容,在xaml中指定使用usercontrol。
我正在广泛使用这个用户控件,模板中的标准xaml控件一切都很好。 现在我试图用OxyPlot
在这个控件中显示一些图表 <DataTemplate x:Key="SomeChart">
<Grid x:Name="oxyGrid" >
<oxy:PlotView x:Name="oxyChart" Model="{Binding model}" />
</Grid>
</DataTemplate>
我在usercontrol_loaded中初始化图表的数据模型 但是在我手动调用InvalidateMeasure之前,图表不会显示。 如果我从usercontrol_loaded调用invalidatemeasure,它将无济于事。
如果我在屏幕上显示图表时从任何一点调用invalidatemeasure - 它会有所帮助,图表会显示出来。
目前,我发现我可以在usercontrol_layoutupdated处理程序中调用invalidatemeasure但不喜欢因为它经常触发 并且需要在usercontrol之外的代码。
如果我尝试在usercontrol中处理事件layoutupdated并从那里调用invalidatemeasure(对于oxychart),我得到“检测到布局周期。布局无法完成。”
关于什么是错的以及如何修复的任何想法:) 将不胜感激 提前致谢 伊利亚安德
答案 0 :(得分:0)
永远不要发帖提问:)
加载模板
后,只需在usercontrol中调用UpdateLayout() private void spContentPanel_Loaded(object sender, RoutedEventArgs e)
{
LoadTemplate();
UpdateLayout();
}
其中spContentPanel只是用于模板加载的网格
<Grid Grid.Row="1" Name="spContentPanel" Loaded="spContentPanel_Loaded"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
</Grid>