我一直在研究附加属性,并提出了一个有趣的理论问题。我知道如果我想通过 XAML 设置附加属性,我使用以下格式:
<control ownerClass.propertyName="some value"/>
我的问题是,如果我从“ownerClass”派生一个类会发生什么。例如,如果我定义以下类:
class MyGrid : Grid {
}
尝试通过 XAML 设置如下
<MyGrid>
<Button MyGrid.Row = "0">Bla Bla</Button>
</MyGrid>
但是智能感知并没有让我。一旦我在附加属性上使用了正确的命名空间,它就起作用了。
此外,它允许我这样做:
<MyGrid>
<Button Grid.Row = "0">Bla Bla</Button>
</MyGrid>
当然,这是有道理的,因为Row附加属性是Grid类的静态成员并且由它定义。这里唯一的问题是我的新类的用户知道它是从 Grid 派生的,并且这个特定属性是由祖先定义的。对我来说,这似乎是我不想向班级用户公开的实现细节。
有没有办法让 WPF隐藏这个附加属性实际上是由超类定义的事实?
谢谢,
科比