| 

.NET C# Java Javascript Exception

1
Hallo,
kann man folgendes Codeschnippsel auch irgendwie in XAML abbilden?

String.Format(MyResources.TestString, "Welt")

MyResources.TestString = "Hallo {0}"

Also irgendwie in der Richtung
<MenuItem 
Header="{Binding Source={x:Static res:MyResources.TestString}, StringFormat=...}"
/>

Als Ergebnis sollte ein MenuItem mit Header = "Hallo Welt" erzeugt werden.

Mit einem ValueConverter kann ich leider nicht arbeiten, weil der Text "Welt" ebenfalls ein gebundener Wert sein muss. Und so viel ich weiß ist das Property ConverterParamter ja nicht bindable.

Ich hoffe ich konnte mein Anliegen halbwegs verständlich erklären.
LG
10.09.2014
mrmee 745 1 8
1 Antwort
0
Konnte das Problem jetzt lösen.

Folgender Code funktioniert
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{x:Static res:MyResources.TestString}">
<Binding Path="StringProperty"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>


Allerdings geht das nur wenn das DependencyProperty (in diesem Fall TextBlock.Text) vom Datentyp string ist.

Möchte man so z.B. einen CommandParameter übergeben funktioniert das nicht. Hier muss man den Weg über einem IMultiValueConverter gehen.
<MenuItem
Header="Stundenübersicht vollständig"
Foreground="{StaticResource BasicForeground}"
Command="{Binding OpenLink}">
<MenuItem.CommandParameter>
<MultiBinding
Converter="{StaticResource resourceStringFormatConverter}"
ConverterParameter="{x:Static res:MyResources.TestString}">
<Binding Path="StringProperty"/>
</MultiBinding>
</MenuItem.CommandParameter>
</MenuItem>


class ResourceStringFormatConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (parameter is string)
{
if (values.Length > 0)
{
return String.Format((string)parameter, values);
}
}
return null;
}

public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
11.09.2014
mrmee 745 1 8

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH