Tag: resourcedictionary

C# – 当应用程序使用其他语言时,以英语获取exception消息?

我正在尝试本地化我的程序,但我希望发送给开发人员的错误消息以英文显示。 我无法找到一种方法来实现这一点,因为如果在抛出错误时将UI文化设置为另一种语言,则会抛出该语言。 由于我自己并没有编写这个程序,并且它非常大,我认为创建新的try catch块以尝试在发生错误或可能发生错误时将文化设置回英语是不切实际的。 目前,CurrentCulture和DefaultThreadCurrentCulture在整个应用程序中始终设置为英语,而CurrentUICulture设置为最终用户的语言。 当我解决方法时,我目前有一个函数已经遍历错误列表(使用System.Resources.ResourceSets(我假设是Windows错误,但我还需要一种方法来查找.NET错误,以便我可以迭代)这个字符串替换了其他语言中的匹配错误,并用它们的英语等价物替换它们,以便在应用程序崩溃时构建一个大的错误消息发送给开发人员。真的,我没有太多的翻译,因为大部分的message是服务器堆栈跟踪并显示抛出exception的位置。最大的问题是转换内部exception消息,有时是主exception消息,因为有时抛出的错误不会出现在ResourceSet中,有时会使用格式化项目,如'{0 }”。 这是我到目前为止翻译剩余错误的代码。 我仍在努力添加正则表达式模式来翻译使用“{0}”之类的错误,所以如果有人对此提出建议或更好的方法,我会很感激建议。 public static string TranslateExceptionMessageTest(string exmsg, Exception e, CultureInfo currentui) { CultureInfo test = Thread.CurrentThread.CurrentUICulture; string matchingstr = “”; string newstr = exmsg; string resourcecollection = “”; Assembly a = e.GetType().Assembly; ResourceManager rm = new ResourceManager(a.GetName().Name, a); ResourceSet rsOriginal = rm.GetResourceSet(currentui, true, true); ResourceSet rsTranslated = rm.GetResourceSet(new […]

如何动态更改ResourceDictionary

我需要动态更改App.xaml文件中的ResourceDictionary 。 我试过以下代码: ResourceDictionary newRes = new ResourceDictionary(); newRes.Source = new Uri(“/PsyboInventory;component/TitleBarResource.xaml”, UriKind.RelativeOrAbsolute); this.Resources.MergedDictionaries.Clear(); this.Resources.MergedDictionaries.Add(newRes); 没有错误,但主题没有改变

按名称访问ResourceDictionary

可以说我的Application.xaml中有一些ResourceDictionary定义如下: 我原以为我可以简单地在后面的代码中访问字典,如下所示: brushResources.MergedDictionaries.Add(someNewBrushes) graphicsResources.MergedDictionaries.Add(someNewGraphics) 但这似乎并非如此,这是处理ResourceDictionary的错误方法吗? 我真的很喜欢用MEF动态加载资源的能力,这对我来说似乎是一个绊脚石。 编辑 修复了显示字典实例在MergedDictionaries中的示例代码

在ResourceDictionary文件中使用viewbox

我有ResourceFile1.xaml文件的内容 …. PhoneAppplicationPage的代码 但这个代码不起作用。 Designer Error:InvalidOperationException:Element已经是另一个元素的子元素。 还有如果我使用类似的代码运行时错误:无法分配给属性’System.Windows.Controls.ContentControl.Content’。 如果Viewbox在Grid.Resources中使用没有问题可以正常工作但我想使用ResourceDictionary.how我可以吗?

在WPF中的外部程序集中使用x:Shared =“False”资源时出错

在我们的项目中,我们有一个ResourceDictionary ,其中包含一些如下所示的图标: 需要x:Shared=”False”属性,因为当我在多个视图中使用它时,图标会消失。 现在我们想要创建具有相同图标的另一个项目,因此我们决定将它们放在由两个项目引用的库项目中。 但是当我们尝试运行应用程序时,我们总是会收到错误: 命名空间“ http://schemas.microsoft.com/winfx/2006/xaml ”中的共享属性只能在已编译的资源字典中使用。“ 但我们无法摆脱x:Shared=”False”属性,因为据我所知,它是阻止图标消失的唯一方法。 那么我们可以做什么,通过项目参考和不消失的图标在多个项目上共享图标?

合并资源字典

我正在尝试将wpf资源字典合并到后面的代码上,但是由于某些原因,这不起作用。 如果我尝试合并文档本身的字典,它正在运行,例如: 这是有效的,但如果我评论ResourceDictionary.MergedDictionaries并在代码中尝试这样: ResourceDictionary skin = new ResourceDictionary(); skin.Source = styleLocation; ResourceDictionary skinFather = new ResourceDictionary(); skinFather.MergedDictionaries.Add(skin); skinFather.Source = styleLocationFather; 这会因为无法找到资源而中断。

如何从资源字典中获取Brushes并将其应用于动态元素在wpf中?

现在我想从ResourceDictonary获取LinearGradientBrush并将其动态应用于按钮作为wpf中的背景颜色。 BtnGetBrushes.Background = Brushes.Green; 我想应用上面的颜色而不是这个(Brushes.Green)。 我该怎么办?

如何加载外部XAML ResourceDictionary

如何像这样添加ResourceDictionary? ResourceDictionary template = new ResourceDictionary(); template.Source = new Uri(“Design.xaml”, UriKind.Relative); Application.Current.Resources.MergedDictionaries.Add(template); 绝对的Uri它完美地工作但是来自Relative does。

如何在WPF中将一个ResourceDictionary导入到其他资源中?

是否可以将一个资源字典添加到另一个资源字典中? 谢谢你的帮助。

从Silverlight中的不同ResourceDictionary引用ResourceDictionary中的资源

我在App.xaml中有以下代码集: NavigationPanel.xaml包含一个如下所示的样式: {StaticResource DarkBackground}在Brushes.xaml文件(即第一个资源字典)中定义。 它被定义为 在资源字典中。 在运行时,我收到以下错误: Cannot find a Resource with the Name/Key DarkBackground [Line: 16 Position: 44] 行号和位置引用app.xaml中的NavigationPanel.xaml资源字典。 我可以从其他控件引用画笔,而不是包含的资源字典。 为什么我不能引用或为什么它不能解析对合并资源字典的层次结构更高的资源的引用? 我在这里想念的是什么?