Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Set resource string to XAML

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");
like image 298
Inder Kumar Rathore Avatar asked Oct 15 '12 06:10

Inder Kumar Rathore


2 Answers

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>
like image 146
Nikhil Agrawal Avatar answered Sep 29 '22 10:09

Nikhil Agrawal


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"]);
like image 23
Shahar Prish Avatar answered Sep 29 '22 11:09

Shahar Prish