【问题标题】:Convert XAML WPF Window to WinForm将 XAML WPF 窗口转换为 WinForm
【发布时间】:2011-02-15 18:48:34
【问题描述】:

是否有任何实用程序或转换器可以将 XAML WPF 窗口转换为 .Net 2.0 Windows 表单形式?

【问题讨论】:

  • 我认为没有..即使有..我想知道他们如何将 WPF 的控件层次结构展平为 winform 控件...
  • 你说得对,但我需要基本布局,或“图”
  • 您不能使用ElementHost 简单地将您的 WPF 控件嵌入到 WinForms 的窗口中吗?
  • 但问题是我使用的是.net 2.0!! :)

标签: c# wpf xaml windows-forms-designer


【解决方案1】:

不,而且不太可能有这样的事情; WPF 和 WinForms 是完全不同的框架,由于 UI 组成、布局差异、定位系统不同等原因,WPF UI 并不能真正转换为 WinForms UI。

【讨论】:

  • 我明白了,主要原因是 WPF 中的组合方式不同,但我需要一个实用程序来给我一个粗略的 WinForm 以最接近它们在 WPF 窗口中的方式包含控件
  • 恐怕据我所知没有类似的事情,而且我倾向于对这类事情保密。
【解决方案2】:

没有工具可以转换它。使用ElementHost 在 WPF 中加载 WPF 组件可能值得,这样您就不需要转换并且可以重用 WPF 组件。如果您有 WPF 窗口,则需要将其转换为 UserControl 才能工作。

编辑:

.Net 2 code to load WPF control

    string dllPath = "C:\\ProjectsTest\\TestSolution\\ActiveXUser\\bin\\Debug\\TestControl.dll";
if (!File.Exists(dllPath)) {
    return;
}

string versionInformation = null;
versionInformation = Environment.Version.Major.ToString() + Environment.Version.Minor;

Assembly loadedAssembly = Assembly.LoadFile(dllPath);

Type[] mytypes = loadedAssembly.GetTypes();

Type t = mytypes[1];
Object obj = Activator.CreateInstance(t);

versionInformation = Environment.Version.Major.ToString() + Environment.Version.Minor;
this.Panel1.Controls.Add(obj);

【讨论】:

  • 但问题是我使用的是.net 2.0!! :
  • 啊。 here上有解决方案
  • 这甚至不会编译,因为 ControlCollection.Add 方法采用 Control 而不是任意对象。
【解决方案3】:

也许您可以将这个 Xaml 库用于 WinForms?

https://winformsxaml.codeplex.com

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-04
    • 1970-01-01
    • 1970-01-01
    • 2012-11-23
    • 1970-01-01
    相关资源
    最近更新 更多