【问题标题】:C# WPF.MDI without dll没有 dll 的 C# WPF.MDI
【发布时间】:2014-02-27 14:15:08
【问题描述】:

我找到了WPF.MDI 的来源,我尝试在我的项目中使用它,而没有任何特定的 dll。所以,我在项目中添加了源代码

然后,编写xmlns声明xmlns:mdi="clr-namespace:WPF.MDI"并使用MdiChild创建一个容器

    <mdi:MdiContainer Theme="Aero">
        <mdi:MdiChild />
    </mdi:MdiContainer>

但是,我收到了一个错误XamlParseException

我想,我做错了。但是,有什么解决办法吗?

更新: 当我将 WPF.MDI.dll 放入带有 .exe 文件的文件夹并启动它时 - 没有错误。为什么要找dll?

【问题讨论】:

  • 您是否也收到了一些关于出了什么问题的详细错误消息?
  • Call the constructor for type"WPF.MDI.MdiContainer", satisfying the specified binding constraints, led to an exception." Row number "7" and the position in the "10." 字符串是&lt;mdi:MdiContainer Theme="Aero"&gt;

标签: c# .net wpf dll mdi


【解决方案1】:

尝试像这样设置你的命名空间声明:

 xmlns:mdi="clr-namespace:WPF.MDI;assembly=MDISource"

所以添加assembly 部分。 如果您的班级在不同的程序集中,您需要添加它。见MSDN

assembly= 包含部分或全部引用的 CLR 的程序集 命名空间。该值通常只是程序集的名称,而不是 路径,并且不包括扩展名(例如 .dll 或 .exe)。 该程序集的路径必须建立为项目参考 在包含您尝试映射的 XAML 的项目文件中。在 为了合并版本控制和强名称签名,程序集 value 可以是 AssemblyName 定义的字符串,而不是 简单的字符串名称。

如果引用的 clr 命名空间与引用自定义类的应用程序代码在同一程序集中定义,则可以省略

程序集。或者,这种情况的等效语法是指定 assembly=,等号后面没有字符串标记。

更新 Read this answer.

【讨论】:

  • 这对我没有帮助。我需要写什么MDISource?我不明白
  • 你可以忽略这个答案,我读错了你的问题。您在同一个项目中添加了 MDI,对吗?那么这个就不需要了。
  • 是的,我在同一个项目中添加的
  • 我试过了,但是消息没有显示:(也许,因为异常来得更早。
【解决方案2】:

删除MdiContainer.cs中的96-100字符串后问题解决

        if (Environment.OSVersion.Version.Major == 5)
            ThemeValueChanged(this, new DependencyPropertyChangedEventArgs(ThemeProperty, Theme, ThemeType.Luna));
        else
            ThemeValueChanged(this, new DependencyPropertyChangedEventArgs(ThemeProperty, Theme, ThemeType.Aero));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-18
    • 1970-01-01
    • 2013-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-11
    相关资源
    最近更新 更多