我在我的Resources.resx中包含了一个图标文件,我想在一个堆栈面板内的TreeViewItem上显示.
1).ico文件可用于此目的吗?或者它必须是.bmp或jpg?
2)你在XAML中设置了什么来源?以下代码对我不起作用
<StackPanel Orientation="Horizontal">
<Image Margin="2" Source="/Resources/Folder_Back.ico" />
<TextBlock Margin="2" Text="{Binding ProgramName}"
Foreground="White" FontWeight="Bold"/>
</StackPanel>
Run Code Online (Sandbox Code Playgroud) 我知道所有关于老派的方式:使用一个资源文件用的.resx扩展,提供了NeutralResourcesLanguage属性,中性资源在装配编译,就可以编译从其他本地化资源(blahblah.de-DE卫星组件的.resx).Visual Studio还从资源生成强类型.cs,因此很容易从代码中使用(Properties.Resources.Default.WhateverStringResource).
我刚学的新的WPF的方式:把资源的.xaml文件中,使用的UICulture标签中的.csproj把.baml资源在卫星组装,还是不行,就把.baml资源的主要组件.这些资源很容易在.xaml中使用,但是AFAIK,而不是代码,因为没有.cs文件是自动生成的.
所以也许我错了,但我有几个问题."说真的,到底怎么了?" 成为第一个.为了使我的ranting有效,只需在Visual Studio 2010中创建一个新的WPF应用程序:你将获得.xaml文件,它也将在那里放置一个空的Properties\Resources.resx.你有它,所以他们需要共存.
首先,我还需要新老学校吗?我看不到从代码隐藏中使用强类型.xaml资源的简单方法.为什么不?也许有一种方法可以将它们生成到.cs文件中,我只是不知道它.
现在更大的问题是我不能使用.xaml中的.resx资源.为什么?!Visual Studio 2010的设计师肯定不会看到它们,但同样,它可能是我的坏事.
MSDN建议使用UICulture标记.它确实将.baml资源放在附属程序集中,因此程序集甚至不包含中性程序集.但它不适用于老式的中立资源,AFAIK,非本地化的.resx需要进入主程序集.因此,如果我想在同一个项目中使用new和old-school,我就不能使用UICulture标签,我需要主程序集中的所有中性资源.我是唯一一个为此烦恼的人吗?
所以问题:
我想直接在我的xaml布局中访问资源,官方文档给我们一些不好的例子,所以我无法让它工作.假设如下Resources.resw
:
我可以从C#类访问我的字符串资源,如下所示:
var loader = new ResourceLoader();
var resourceString = loader.GetString("txt_ok");
Run Code Online (Sandbox Code Playgroud)
我如何在xaml中访问此资源以获取TextBlock
文本?
<TextBlock
x:Name="MyTextBox"
Text="I want to get string resource here"/>
Run Code Online (Sandbox Code Playgroud)