将资源字符串设置为XAML

时间:2012-10-15 06:21:38

标签: c# xaml windows-8 microsoft-metro

我知道如何从资源中设置字符串 <TextBlock x:Uid="Text1"/> 其中Text1.Text是“你好”

但我想这样做

<TextBlock Text = {something here to get GreetingText}/>

其中GreetingText是“你好”

因此我可以从代码中获取相同的字符串

var loader = new Windows.ApplicationModel.Resources.ResourceLoader();
var string = loader.GetString("GreetingText");

2 个答案:

答案 0 :(得分:11)

包括此

xmlns:system="clr-namespace:System;assembly=mscorlib"

拥有system:string这样的资源。

<Window.Resources>
    <system:String x:Key="GreetingText">Hello</system:String>        
</Window.Resources>

并在xaml中用作

<TextBlock Text="{StaticResource GreetingText}" />

并在代码中使用它作为

string s = (string)objectofMainWindow.Resources["GreetingText"];

编辑:回答您的评论

就是这样。资源字典位于Window.Resources

<Window 
    xmlns:system="clr-namespace:System;assembly=mscorlib"

      Your Rest namespaces

     />

<Window.Resources>
    <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
                    xmlns:local="using:ATTFamilyMap.strings">
        <system:String x:Key="GreetingText">Hello</system:String>
    </ResourceDictionary>
</Window.Resources>

Your Code

</Window>

答案 1 :(得分:11)

Nikhil的回答是正确的,但适合其他平台。

对于Windows 8,您需要在资源目录中执行以下操作:

<x:String x:Key="MyString">This is a resource</x:String>

在你的xaml中:

<TextBlock Text="{StaticResource MyString}"/>

在代码中:

string myString = (string)(App.Current.Resources["MyString"]);