3

由于 Border 不是从 Control 派生的,它是如何工作的?

    <Border.Style>
        <Style>
            <Style.Setters>
                <Setter Property="Control.Background" Value="LightBlue"/>
            </Style.Setters>
        </Style>
    </Border.Style>
4

2 回答 2

2

BackgroundWPF 中的依赖属性由许多类共享。它在Panel类中定义,其他类只调用AddOwner它。

边框.cs

[CommonDependencyProperty]
public static readonly DependencyProperty BackgroundProperty =
    Panel.BackgroundProperty.AddOwner(
        typeof (Border),
        new FrameworkPropertyMetadata(null,
            FrameworkPropertyMetadataOptions.AffectsRender |
            FrameworkPropertyMetadataOptions.SubPropertiesDoNotAffectRender));

面板.cs

[CommonDependencyProperty] 
public static readonly DependencyProperty BackgroundProperty =
    DependencyProperty.Register("Background", 
        typeof(Brush),
        typeof(Panel),
        new FrameworkPropertyMetadata((Brush)null,
            FrameworkPropertyMetadataOptions.AffectsRender | 
            FrameworkPropertyMetadataOptions.SubPropertiesDoNotAffectRender));
于 2013-09-06T10:02:17.080 回答
1

Control可以与用户交互的类。这包括类:TextBoxButton等。来自MSDN的引用:

Control 类是您添加到应用程序的许多控件的基类。Control 类定义了非常少的行为;虽然可以将 Control 添加到您的应用程序,但添加从 Control 继承的控件(例如 Button 或 ListBox)更为常见。

他还添加了一个依赖属性,例如BackgroundFontFamilyForeground等,这些属性对System.Windows.Controls. 完整的属性列表在这里ControlTemplate他还代表了使用 a来定义其外观的用户界面 (UI) 元素的基类。

让我们看看MSDNBorder上的, 链接上的继承层次结构:

System.Object 
 System.Windows.Threading.DispatcherObject
  System.Windows.DependencyObject
   System.Windows.Media.Visual
    System.Windows.UIElement
     System.Windows.FrameworkElement
      System.Windows.Controls.Decorator
       System.Windows.Controls.Border

因此System.Windows.Controls,它继承了所有可用的属性Control

于 2013-09-06T10:17:05.600 回答