11

I know how to set string from resource
<TextBlock x:Uid="Text1"/> where Text1.Text is "Hello"

But I want to do like this

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

where GreetingText is "Hello"

So that I may get the same string from code also as

var loader = new Windows.ApplicationModel.Resources.ResourceLoader();
var string = loader.GetString("GreetingText");
Inder Kumar Rathore
  • 38,350
  • 17
  • 126
  • 179

2 Answers2

13

Include this

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

Have a resource of system:string like this.

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

and use it in xaml as

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

and use it in code behind as

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

Edit: Answer to your comment

Its this way. Resource Dictionary is inside 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>
Nikhil Agrawal
  • 44,717
  • 22
  • 115
  • 201
12

Nikhil's answer is on the right track, but is right for other platforms.

For windows 8, you need to do the following in your resource directory:

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

In your xaml:

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

In code:

string myString = (string)(App.Current.Resources["MyString"]);
Shahar Prish
  • 4,746
  • 3
  • 25
  • 44