我正在为我们的WPF应用程序构建一个UI元素,允许用户可视化以网格格式对齐的图形集合。据我了解,您可以使用带有WrapPanel的ItemsControl,它将以网格格式很好地对齐ui元素。
当我们尝试使用winforms图形库(zedgraph)生成图形时,困难就出现了。这意味着我们必须使用WindowsFormsHost
来显示图表视图。我试图使用普通的数据绑定来绑定图表集合,它实际上并不起作用:
XAML:
<ItemsControl ItemsSource="{Binding Graphs}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<WindowsFormsHost Margin="5">
<ui:Graph></ui:Graph>
</WindowsFormsHost>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
上面的代码什么都没有显示,但是访问了Graphs getter。
此外,即使我取消绑定,我只是在ItemsControl中插入一些随机图表视图......它仍然没有显示任何内容:
XAML:
<ItemsControl>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<WindowsFormsHost Margin="5">
<ui:Graph></ui:Graph>
</WindowsFormsHost>
<WindowsFormsHost Margin="5">
</WindowsFormsHost>
<ui:Graph></ui:Graph>
</WindowsFormsHost>
<WindowsFormsHost Margin="5">
<ui:Graph></ui:Graph>
</WindowsFormsHost>
</ItemsControl>
为了测试以确保图形库正常运行,这确实显示了一个图形:
<Grid>
<WindowsFormsHost Margin="5">
<ui:Graph></ui:Graph>
</WindowsFormsHost>
</Grid>
有人能引导我朝正确的方向前进吗?非常感谢。
答案 0 :(得分:2)
这可能与布局有关。 winforms很糟糕,需要你对所有东西的大小进行硬编码。
尝试为winformshost提供固定的硬编码宽度和高度