WPF определяет ConverterCulture / Language в ресурсах - PullRequest
0 голосов
/ 04 июля 2019

Хотелось бы, чтобы культура / язык по умолчанию была определена как ресурс, чтобы обеспечить согласованное отображение выбранных меток. Кажется, однако, что невозможно определить ни ресурс Language (XMLLanguage), ни ConverterCulture (CultureInfor), ни ресурс string, похоже, также невозможно использовать:

<TextBlock Text="{Binding Source={x:Static sys:DateTime.Now}, 
           Mode=OneWay, StringFormat={StaticResource DateFormat},
           ConverterCulture={StaticResource DefaultCulture},
           Language={StaticResource DefaultLang}/>
//....
<Grid.Resources>
    <sys:String x:Key="DefaultCutureString">en-GB</sys:String>
    <win:XmlLanguage xmlns:win="clr-namespace:System.Windows.Markup;assembly=PresentationFramework" x:Key="DefaultLang">en-GB</win:XmlLanguage>
    <g:CultureInfo xmlns:g="clr-namespace:System.Globalization;assembly=mscorlib" x:Key="DefaultCuture">
        <x:Arguments>
            <sys:String>en-GB</sys:String>
        </x:Arguments>
    </g:CultureInfo>
</Grid.Resources>

Как определить и применить культуру / язык с помощью ресурса?

1 Ответ

0 голосов
/ 04 июля 2019

XmlLanguage и CultureInfo не имеют конструкторов по умолчанию без параметров, что означает, что вы не можете создавать их экземпляры в XAML.

Но вы можете создать ресурсы программным способом и затем добавить их в Grid.Resources (просто укажите Grid и x:Name "grid" или аналогичные в разметке XAML, чтобы иметь возможность идентифицировать их в коде):

grid.Resources["DefaultLang"] = XmlLanguage.GetLanguage("en-GB");
grid.Resources["DefaultCuture"] = new System.Globalization.CultureInfo("en-GB");
...