很难想出一个简洁的标题!
我在一个解决方案中有两个 WPF 项目。第一个,WpfApplication 定义 Class1。第二,WpfControlLibrary 定义从 Class1 继承的 Class2、从 Class2 继承的 Class3 和 UserControl1。它们如下所示:
WpfApplication Class1
namespace WpfApplication5
{
public class Class1
{
public string Property1 { get; set; }
}
}
WpfControlLibrary Class2 和 Class3
namespace WpfControlLibrary1
{
public class Class2
{
public string Property2 { get; set; }
}
public class Class3 : Class2
{
public string Property3 { get; set; }
}
}
总之,Class 1 有 Property1,Class2 有 Property1(通过继承)和 Property2,Class3 有 Property1 和 Property2(都通过继承)和 Property3。用户控件的 XAML 是:
<UserControl x:Class="WpfControlLibrary1.UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:b="clr-namespace:WpfApplication5;assembly=WpfApplication5"
xmlns:l="clr-namespace:WpfControlLibrary1"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<UserControl.Resources>
<b:Class1 x:Key="test1" Property1="xxx" />
<l:Class2 x:Key="test2" Property1="xxx" Property2="yyy" />
<l:Class3 x:Key="test3" Property2="yyy" Property3="zzz" />
<l:Class3 x:Key="test4">
<l:Class3.Property1>xxx</l:Class3.Property1>
<l:Class3.Property2>yyy</l:Class3.Property2>
<l:Class3.Property3>zzz</l:Class3.Property3>
</l:Class3>
</UserControl.Resources>
<Grid>
</Grid>
问题是 XAML 无法编译,并给出以下错误:
The property 'Property1' does not exist in XML namespace 'clr-namespace:WpfControlLibrary1'.
The property 'Property1' was not found in type 'Class2'.
The attachable property 'Property1' was not found in type 'Class3'.
看起来 XAML 无法处理从不同程序集继承的属性。这是对的吗,还是我看了太久了。我尝试了设置 Property1 和事件的不同形式,b:Property1=
但b:Class1.Property1=
似乎都不起作用。还是我一直在研究这个太久和过于复杂的事情?