Мне нужно, чтобы TextBlock.Text был получен из менеджера переводов, что-то вроде
<TextBlock Text="{Binding TranslateManager.Translate('word')}" />
Я не хочу устанавливать DataSource для всех текстовых блоков. Единственный способ, которым я нашел, как это сделать, это привязать к «статическому» классу и использовать конвертер:
<TextBlock Text="{Binding Value,
Source={StaticResource Translation},
Converter={StaticResource Translation},
ConverterParameter=NewProject}" />
И эти вспомогательные классы
public class TranslationManager : IValueConverter
{
public static string Translate(string word)
{
return translate(word);
}
// this is dummy for fake static binding
public string Value { get; set; }
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var name = parameter as string;
return TranslationManager.Translate(name, name);
}
}
Но есть ли лучший, более короткий путь?