我正在为我们的 WPF 应用程序构建一个 UI 元素,它允许用户可视化以网格格式对齐的图形集合。据我了解,您可以将 ItemsControl 与 WrapPanel 一起使用,它可以很好地将 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>
谁能指导我正确的方向?非常感激。