【问题标题】:Why is TextElement.FontSize an attached property in StackPanel in WPF为什么 TextElement.FontSize 是 WPF StackPanel 中的附加属性
【发布时间】:2014-01-27 01:45:30
【问题描述】:

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

【问题讨论】:

    标签: c# wpf


    【解决方案1】:

    如果您是 C# 新手,我强烈建议您先在控制台应用程序中做一些 Hello, World! 类型的东西,然后再尝试了解复杂的 WPF GUI 内容。

    WPF 是一个复杂的框架,并不适合没有经验的人。您必须具备 C# 和 OOP 方面的深厚背景才能学习 MVVM,这是正确使用 WPF 必须学习的内容。

    也就是说,StackPanel 没有FontSize 属性,因为它是Panel 而不是Control,这是定义FontXXX 属性的地方。这就是为什么您可以选择定义 TextElement.FontSize 附加属性的原因,因为可视树中的 Dependency Property Value Inheritance,这些子控件将继承。

    顺便说一句,那本书在前同事的办公桌上,所以我抓起它并快速浏览。我没有发现任何关于 MVVM 的提及,此时我认为它是 WPF 学习曲线的基本部分。

    【讨论】:

    • 我读了这本书WPF 4 Unleashed. Adam Nathan,也没有发现任何关于MVVM的内容。那样这本书只是一套关于 WPF 的基本信息,这会从学习这项技术开始,可惜并没有真正学会如何创建一个严肃的应用程序。
    • 像这样的基于流行语的观点使 WPF 对许多初学者来说显得复杂而可怕。另外,要掌握 MVVM 的更多智慧,请参阅:stackoverflow.com/questions/1098023/…
    • 我希望书中提到 TextElement 是一个可用于控制文本外观的辅助类。 WPF 是复杂的框架,但现在什么是简单的?
    • 更多关于TextElementhere
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-17
    • 2017-09-15
    相关资源
    最近更新 更多