绑定包含 WPF 中的 WindowsFormHost 项的项控件

本文关键字:控件 WindowsFormHost 中的 包含 WPF 绑定 | 更新日期: 2023-09-27 18:35:36

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

上面的代码不显示任何内容,但访问了图形获取器。

另外,即使我取消绑定并且只是在 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> 

谁能引导我走向正确的方向?非常感谢。

绑定包含 WPF 中的 WindowsFormHost 项的项控件

这可能与布局有关。 WinForms 很糟糕,需要你对所有东西的大小进行硬编码。

尝试为winforms主机提供固定的硬编码宽度和高度