我有一个项目有几个这样的UI文化参考:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:sysglb="clr-namespace:System.Globalization;assembly=mscorlib"
xmlns:local="clr-namespace:WpfApplication1"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid>
<StackPanel Orientation="Horizontal" Grid.Column="1">
<TextBlock Text="{Binding MyData, StringFormat={}{0:C2}, ConverterCulture={x:Static sysglb:CultureInfo.CurrentUICulture}}" />
</StackPanel>
</Grid>
在代码背后,我有一个简单的实现:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext = this;
MyData = 10;
}
public int MyData { get; set; }
}
在App_Startup中,我初始化了CurrentUICulture:
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-GB");
当我在设计师中打开任何此类用户界面时,我会收到“无效标记”#39;有错误:
The member "CurrentUICulture" is not recognized or is not accessible.
知道为什么这个基本用例在Visual Studio 2015 RC的Xaml设计器中不起作用?我已尝试过前一篇文章中提到的选项,但这不起作用(Visual studio 2012 XAML designer invalid markup)
早些时候,在加载设计器时,我们可以在Visual Studio 2010,2012和2013中看到控件和UI没有问题。我们决定试用Visual Studio 2015 RC,但现在看来这已经破了。
答案 0 :(得分:1)
除了我的评论,将目标框架更改为.NET Framework 4.6解决了这个问题,我认为这是VS2015 XAML编辑器中的一个错误,与现在读写的CultureInfo.CurrentUICulture Property的更改有关
作为解决方案,我将应用启动更改为
CultureInfo.DefaultThreadCurrentUICulture = new CultureInfo("en-GB");
和XAML到
<TextBlock Text="{Binding MyData, StringFormat={}{0:C2}, ConverterCulture={x:Static sysglb:CultureInfo.DefaultThreadCurrentUICulture}}"/>
并且看起来很满意。