'Invalid Markup' 在 Xaml 设计师 visual studio 2015
'Invalid Markup' in Xaml designer visual studio 2015
我有一个项目有多个 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中,我已经初始化了当前UI文化:
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-GB");
当我在设计器中打开任何此类 UI 时,我收到 'Invalid Markup' 错误消息:
The member "CurrentUICulture" is not recognized or is not accessible.
知道为什么这个基本用例不能在 Xaml 设计器中为 Visual Studio 2015 RC 工作吗?我已经尝试过之前 post 中提到的选项,但它不起作用 (Visual studio 2012 XAML designer invalid markup)
之前在加载设计器的时候,在Visual Studio2010、2012、2013可以看到控件和UI没有问题,我们决定试试Visual Studio2015 RC,但现在看来这已经坏了。
根据我的评论,将目标框架更改为 .NET Framework 4.6 可以解决问题,我认为这是 VS2015 XAML 编辑器中的错误,与 [=12= 的更改有关] 现在可读写。
作为解决方法,我将应用程序启动更改为
CultureInfo.DefaultThreadCurrentUICulture = new CultureInfo("en-GB");
和 XAML 到
<TextBlock Text="{Binding MyData, StringFormat={}{0:C2}, ConverterCulture={x:Static sysglb:CultureInfo.DefaultThreadCurrentUICulture}}"/>
它似乎对此很满意。
我有一个项目有多个 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中,我已经初始化了当前UI文化:
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-GB");
当我在设计器中打开任何此类 UI 时,我收到 'Invalid Markup' 错误消息:
The member "CurrentUICulture" is not recognized or is not accessible.
知道为什么这个基本用例不能在 Xaml 设计器中为 Visual Studio 2015 RC 工作吗?我已经尝试过之前 post 中提到的选项,但它不起作用 (Visual studio 2012 XAML designer invalid markup)
之前在加载设计器的时候,在Visual Studio2010、2012、2013可以看到控件和UI没有问题,我们决定试试Visual Studio2015 RC,但现在看来这已经坏了。
根据我的评论,将目标框架更改为 .NET Framework 4.6 可以解决问题,我认为这是 VS2015 XAML 编辑器中的错误,与 [=12= 的更改有关] 现在可读写。
作为解决方法,我将应用程序启动更改为
CultureInfo.DefaultThreadCurrentUICulture = new CultureInfo("en-GB");
和 XAML 到
<TextBlock Text="{Binding MyData, StringFormat={}{0:C2}, ConverterCulture={x:Static sysglb:CultureInfo.DefaultThreadCurrentUICulture}}"/>
它似乎对此很满意。