设置应用程序资源字典时的奇怪Visual Studio行为

时间:2010-09-03 00:07:46

标签: c# wpf winforms resourcedictionary

我正在尝试以编程方式设置当前的WPF Application ResourceDictionary。 (我有一个WindForms项目,所以没有“App.xaml”为我做这个。)

注意:如果有人知道如何将Application.Resources的等价物绑定到ElementHost 及其所有子控件层次结构,那么这就是最终目标。

我添加到我的代码中:

Application.Current.Resources.MergedDictionaries.Add(new ResourceDictionary() { Source = new Uri("/Middlewerks;component/Resources.xaml", UriKind.RelativeOrAbsolute) });

现在它在应用程序中完美运行,造型很好(即:网格背景为红色。它只是一种测试风格)。

但是如果我在设计师中打开这个表单,Visual Studio会变得疯狂。整个窗口使用我的风格!

以下是截图:http://localhostr.com/files/8368cc/Failure.jpg 很酷的部分是我找到了如何编辑Visual Studio 2010丑陋的蓝皮肤。可悲的是,当我的顾客在我的控制下发展时,不会让我的顾客满意。

随意尝试并告诉我如何在不搞砸的情况下实施我的资源。

XAML代码:(如屏幕截图所示)

编辑:这是我临时的,非常黑客的解决方案,所以我可以继续开发。 “Application.Current”在Visual Studio上运行真的很痛苦。

if (Application.Current.MainWindow == null || !Application.Current.MainWindow.Title.EndsWith(" - Microsoft Visual C# 2010 Express"))
{
    Application.Current.Resources.MergedDictionaries.Add(new ResourceDictionary() { Source = new Uri("/Middlewerks;component/Resources.xaml", UriKind.RelativeOrAbsolute) });
}

1 个答案:

答案 0 :(得分:0)

当我在使用WPF区域的WinForms项目上工作时,我只是在需要时使用MergedDictionaries来引入我需要的资源。

<Window.Resources>
  <ResourceDictionary>
    <ResourceDictionary.MergedDictionaries>
      <ResourceDictionary Source="DefaultResourceDictionary.xaml"/>
    </ResourceDictionary.MergedDictionaries>
  </ResourceDictionary>
</Window.Resources>

你能逃脱吗?如果您需要以编程方式执行更多操作,仍然可以在代码中添加代码。

您可以在任何级别使用此元素。也就是说,它不必是Window,如此处所示。