3

我正在为我们的 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> 

谁能指导我正确的方向?非常感激。

4

1 回答 1

2

这可能与布局有关。winforms 很可怕,并且要求您对所有内容的大小进行硬编码。

尝试为 winformshost 提供固定的硬编码宽度和高度

于 2013-10-18T14:32:19.577 回答