我正在尝试以编程方式设置当前的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) });
}
答案 0 :(得分:0)
当我在使用WPF区域的WinForms项目上工作时,我只是在需要时使用MergedDictionaries来引入我需要的资源。
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="DefaultResourceDictionary.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
你能逃脱吗?如果您需要以编程方式执行更多操作,仍然可以在代码中添加代码。
您可以在任何级别使用此元素。也就是说,它不必是Window
,如此处所示。