我正在阅读WPF 4 Unleashed,我显然是WPF的新手(以及一般的C#和.NET)
在书中,发现了以下剪辑代码:
<StackPanel TextElement.FontSize=”30” TextElement.FontStyle=”Italic”
Orientation=”Horizontal” HorizontalAlignment=”Center”>
<Button MinWidth=”75” Margin=”10”>Help</Button>
<Button MinWidth=”75” Margin=”10”>OK</Button>
</StackPanel>
TextElement.FontSize
是附属财产。我不明白为什么附属财产?
(虽然,我确实理解依赖属性的概念)
在MS网站的Attached Properties Overview
中,还有另一段代码。
<DockPanel>
<CheckBox DockPanel.Dock="Top">Hello</CheckBox>
</DockPanel>
在这种情况下,为什么DockPanel.Dock
是附加属性是有道理的 - DockPanel
类包含依赖属性DockProperty
。
答案 0 :(得分:1)
如果您是C#的新手,我强烈建议您在尝试进入复杂的WPF GUI之前,首先在控制台应用程序中执行一些Hello, World!
类型的操作。
WPF是一个复杂的框架,并不适合没有经验的人。为了学习MVVM,你必须具备C#和OOP的强大背景,这是你必须学习的才能正确使用WPF。
也就是说,StackPanel
没有FontSize
属性,因为它是Panel
而不是Control
,这是定义FontXXX
属性的地方。这就是为什么你可以选择定义TextElement.FontSize
附加属性,它们是由于Visual Tree中的Dependency Property Value Inheritance
而继承的子控件。
顺便说一句,那本书是在一位前同事的办公桌上,所以我抓住它并迅速浏览它。我没有找到MVVM的一个提及,在这一点上我认为是WPF学习曲线的基本部分。