为什么TextElement.FontSize是WPF中StackPanel中的附加属性

时间:2014-01-27 01:45:31

标签: c# wpf

我正在阅读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

1 个答案:

答案 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学习曲线的基本部分。