我的Xaml代码在程序集Foo中,在名称空间Foo中。在程序集FooBar中,在命名空间Foo.Bar中,我有一个名为MyClass的类,它包含一个无参数构造函数。在我的xaml中,我想创建一个新的MyClass实例并将其分配给Tag。我怎么能这样做?
我尝试了以下内容:
<Application x:Class="Foo.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:foobar="clr-namespace:Foo.Bar;assembly=FooBar"
StartupUri="MainWindow.xaml">
<Application.Resources>
<foobar:MyClass x:Key="MyClass"/>
</Application.Resources>
</Application>
但是在这一点上我已经得到了一个波浪形的下划线,上面写着“类型MyClass在命名空间中不存在”clr-namespace:Foo.Bar; assembly = FooBar“,即使它确实存在。
我该如何解决这个问题?在我解决这个问题之后,我该如何撰写以下内容?
<XamlElement Tag="{??????}"/>
答案 0 :(得分:1)
如果没有先编译新类,设计者可能不会知道它。尝试编译并运行。
此外,如果该类与XAML位于同一个程序集中,则不需要assembly=
:
xmlns:foobar="clr-namespace:Foo.Bar"
要访问资源,请使用:
<XamlElement Tag="{StaticResource MyClass}" />
MyClass
是x:Key
属性的值。
答案 1 :(得分:0)
事实证明这是因为我正在编译CPU设置为x64。出于某种原因,设计师似乎并不喜欢这样,虽然我无法弄清楚原因。如果我改为AnyCPU,一切正常。
我已经注意到x64配置的其他问题,例如单元测试无法正常工作等等,所以我想环境对x64配置的支持不能满足要求。