尝试在Visual Studio 2010中调试Silverlight 4应用程序时遇到此异常。此异常将在它通过InitializeComponent()
行后引发。此异常仅在调试期间发生,但对Visual Studio设计器来说似乎不是问题。
System.Windows.Markup.XamlParseException occurred
Message=Failed to create a 'System.Type' from the text 'local:CustomerEntity'. [Line: 11 Position: 59]
LineNumber=11
LinePosition=59
StackTrace:
at System.Windows.Application.LoadComponent(Object component, Uri resourceLocator)
at TestSilverlightApp.MainPage.InitializeComponent()
at TestSilverlightApp.MainPage..ctor()
InnerException:
所以我想做的是我创建了一个ViewModel
类,它有一个System.Type
类型的EntityType
属性,该属性将在XAML中赋值。
我创建了一个新的最小项目,将重现相同的问题,见下文。
主页面.xaml
这是Silverlight应用程序的RootVisual
。具有指定EntityType
的ViewModel
是在UserControl.Resources
中宣告。
我还将ViewModel
绑定到DataContext
,并特意在绑定到EntityType
参数的主体中创建了一个Run
元素。Visual Studio设计器在显示分配的EntityType
的类型名称时没有问题。
如果我没有在XAML中设置EntityType
参数,则不会发生此错误。
<UserControl x:Class="TestSilverlightApp.MainPage"
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:local="clr-namespace:TestSilverlightApp"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">
<UserControl.Resources>
<local:ViewModel x:Key="rootViewModel" EntityType="local:CustomerEntity" />
</UserControl.Resources>
<StackPanel x:Name="LayoutRoot" DataContext="{StaticResource rootViewModel}">
<TextBlock><Run Text="{Binding EntityType}" /></TextBlock>
</StackPanel>
</UserControl>
主页. xaml.cs
此异常将在它通过下面的InitializeComponent()
行后引发。
namespace TestSilverlightApp
{
public partial class MainPage : System.Windows.Controls.UserControl
{
public MainPage()
{
InitializeComponent();
}
}
}
视图模型. cs
ViewModel类具有接受System.Type
值的EntityType属性。
namespace TestSilverlightApp
{
public class ViewModel
{
public System.Type EntityType { get; set; }
}
}
客户实体. cs
这只是一个空类,我创建它的目的是将其Type赋给ViewModel.EntityType属性。
namespace TestSilverlightApp
{
public class CustomerEntity
{ }
}
我不想实现我自己的TypeConverter
或其他东西来设置XAML中的System.Type
值。
1条答案
按热度按时间oug3syen1#
下面是一个可以使用的类型转换器:
在查看模型代码时,请使用:-
不能使用命名空间别名来定义类型,它必须是静态
GetType
方法可以识别的类型:-