№
Теоретически SAPI может рассчитывать на это, но в большинстве случаев это не служит какой-либо цели, поэтому это не делается.
Ни один из тех ответов не близко к тому, что Вы хотите. Я запустил бы путем чтения о Локализации в WPF. Вы найдете при выполнении локализации с WPF, желание x:Uid, определенного на каждом узле в приложении.
Создайте статический класс, который делает ресурсы доступными как свойства:
public static class Resources
{
public string Resource
{
return Properties.Resources.ResourceManager.GetString("Resource");
}
}
Затем можно связать TextBox с этим:
<TextBlock Text="{Binding Source={x:Static local:Resources}, Path=Resource}" x:Name="upArrowUsersHeader" HorizontalAlignment="Center"
xmlns:local="clr-namespace:MY_NAMESPACE;assembly=MY_ASSEMBLY">
Я не знаю, может ли это быть сделано непосредственно в XAML, но если Вы пишете свой собственный класс обертки вокруг ResourceManager и используете его вместо этого. Заметьте, что класс наследовался TextBlock:
public class ResourceContentTextBlock : TextBlock
{
public string ResourceName
{
set
{
this.Text = Properties.Resources.ResourceManager.GetString(value);
}
}
}
Можно затем использовать ResourceContentTextBlock в XAML где угодно, Вы иначе использовали бы TextBlock:
<Window x:Class="WpfApplication3.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:client="clr-namespace:WpfApplication3"
>
<client:ResourceContentTextBlock ResourceName="String1" />
</Window>
Еще два дополнительных пункта, о которых я забыл упомянуть выше в "Я смог это сделать...":
(извините, я не смог отредактировать вышеприведенный пост, потому что в то время был временным участником)
.Я смог сделать это в программе с:
<TextBlock VerticalAlignment="Center" Margin="3"
Text="{x:Static prop:Resources.OpenButton}"
Visibility="{Binding Source={x:Static prop:Settings.Default}, Path=ShowButtonText, Converter={StaticResource BoolToVis}}"></TextBlock>
Мне также пришлось включить пространство имён .Properties в xaml, например:
xmlns:prop="clr-namespace:MyProjectNamespace.Properties"
Это позволило мне не только использовать строковые ресурсы, которые я определил для своего проекта для глобализации, но я также смог связать (в двух направлениях) с Настройками моего приложения. Это позволило мне очень легко запомнить положение окна, его размер и так далее. Как видите, используйте Settings. для настроек, а Resources. для ресурсов.
Как упоминал Стивен, я думаю, что "официальный" или "лучший" способ - это прикрепить x:Uid ко всему, что вы хотите глобализировать, но я этого не делал, и это сработало без проблем. Я думаю, что в основном x:Uid требуется, если вы используете автоматизированные инструменты или нарушаете задачу перевода, как это было бы в большом проекте. Я просто делал все свои собственные вещи вручную в VS, так что, может быть, все в порядке.
Бен