在运行时加载Microsoft.Windows.Common-Controls

时间:2012-03-08 16:11:34

标签: c# .net wpf manifest

我有一个类库,它通过COM从第三方RAD应用程序(Omnis Studio)调用,该库提供.NET功能,例如SQL / Web服务桥。我必须添加更多方法来显示WPF表单,该表单将事件激发回原始应用程序。

这一切都很好,项目必须是一个类库,并且不能是一个可执行文件,这意味着我无法在“应用程序选项”选项卡中为项目选择清单。我现在面临的主要问题是,如果我的清单文件中没有下面的XML,我就无法获得现代的Windows对话框按钮,因此消息框中的按钮看起来有些过时。

<!-- Enable themes for Windows common controls and dialogs (Windows XP and later) -->

<dependentAssembly>
  <assemblyIdentity
      type="win32"
      name="Microsoft.Windows.Common-Controls"
      version="6.0.0.0"
      processorArchitecture="*"
      publicKeyToken="6595b64144ccf1df"
      language="*"
    />
</dependentAssembly>

那么有没有一种方法可以通过在清单文件中使用这些行来实现相同的效果,但是通过定制代码在类库的入口点执行?

由于

修改

为Rahmound的评论添加说明:

我认为你不明白这个问题。首先,我没有提到这是一个Windows窗体应用程序,项目中没有Windows窗体程序集引用,只有WPF表示程序集。该项目必须是一个类库,因为THIRD方应用程序(这是一个C ++非托管应用程序)只能使用.NET类库,需要显示一个非常自定义的表单,这可以在当前项目中实现,我之所以选择WPF,是因为这是我的大多数桌面应用程序技能所在,它适合WPF的数据绑定模型。我们对最终结果非常满意,我唯一的问题是我的应用程序需要使用XP +主题Windows控件,如果上面的部分不在app.manifest中,则消息框使用旧样式OK,取消按钮不符合我在我的应用程序中的所有其他按钮。

This question explains the message box problem

我需要的是能够实现同样的目标,但没有嵌入式app.manifest。

1 个答案:

答案 0 :(得分:0)

我无法解决这个问题,时间已经不多了,继汉斯的建议之后,我最终使用了Extended WPF Toolkit因为我还想使用其他控件,例如ColourPicker。