Append text to static resource

Tono Nam picture Tono Nam · Apr 16, 2012 · Viewed 7.3k times · Source

If I have the label:

<Label Content="{StaticResource Foo}" />

Is there a way of appending the * in xaml?

I am looking for something like:

<Label Content="{StaticResource Foo, stringformat={0}*" />

I am placing the content of my controls from a resource dictionary because the application supports multiple languages. I was wondering if I could append the * in xaml so that I do not have to create an event and then append it when that event fires.

Edit:

In a resource dictionary I have:

 <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:system="clr-namespace:System;assembly=mscorlib"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                >

     <system:String x:Key="Foo">Name</system:String>

 </ResourceDictionary>

in my window I have: ( I merge the last dictionary)

  <Label Content="{StaticResource 'Foo'}" />

and that displays Name

I will like the label to display Name* not just Name

Maybe it will be possible to achieve that with a style.

Answer

nemesv picture nemesv · Apr 16, 2012

There are multiple ways to do it:

  1. With ContentStringFormat:

    <Label Content="{StaticResource Foo}" ContentStringFormat='{}{0}*'/>
    
  2. With Binding with StringFormat (it only work on string properies thats why you need to use a TextBlock as the Label's content)

    <Label>
       <TextBlock 
           Text="{Binding Source={StaticResource Foo}, StringFormat='{}{0}*'}"/>
    </Label>
    
  3. Or you can write a converter to append the *