【问题标题】:How does the VS XAML designer know what to auto-populate certain values with?VS XAML 设计器如何知道使用什么自动填充某些值?
【发布时间】:2010-04-17 04:54:38
【问题描述】:

<Button Name="MyButton" Content="Test" FontStyle="Italic" />

在上述按钮的 XAML 定义中,FontStyle 属性设置为斜体。当我点击= 标志时,设计师能够以某种方式填充一个列表供我选择。这是如何实现的?

在您回答之前,请考虑FontStyle 属性是FontStyle 类型(这是一个结构),这已经足够恰当了。这不是枚举,这对于 VS 在设计时列出是微不足道的,那么如何选择显示的有效选项列表?还有一个完全独立的FontStyles 类,它包含三个静态字段ItalicNormalOblique,这恰好是VS 在下拉列表中提供的三个项目。 FontStyle 结构和FontStyles 类之间是否有一些映射在幕后进行,因为我在对象浏览器和.NET Reflector 中的许多地方都查看过,但都无法确定任何内容。

谢谢!!

我需要知道!*

*不是真的,但会很好:)

【问题讨论】:

  • 哇,这很奇怪。通常我会说这取决于TypeConverter.GetStandardValues,但FontStyleConverter 不会覆盖GetStandardValuesGetStandardValuesSupported。奇怪。

标签: .net wpf xaml visual-studio-2010 designer


【解决方案1】:

XAML 语言服务使用类型转换器的 GetStandardValues() 来确定在下拉列表中显示的类型。例如,这与属性网格的作用相同。

不幸的是,框架提供的类型转换器并不总是实现 GetStandardValues(),因此设计人员通常会为许多此类类型提供内部替换。属性网格和 XAMl 语言服务使用这些内部替换。

【讨论】:

  • 有趣,这有点道理。感谢您的回答!
【解决方案2】:

我没有答案,但一件有趣的事情是有一个内部 FontStyle 枚举。 MS.Internal.Text.TextInterface.Font 样式定义为

internal enum FontStyle
{
    Normal,
    Oblique,
    Italic
}

这可能是设计人员用于智能感知的内容。

【讨论】:

    猜你喜欢
    • 2021-09-02
    • 2023-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-10
    • 2020-11-05
    • 2012-11-09
    • 1970-01-01
    相关资源
    最近更新 更多