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です。

Border.cs

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

Panel.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ユーザーと対話できるクラス。TextBoxこれには、 、 などのクラスが含まれます。MSDNButtonからの引用:

Control クラスは、アプリケーションに追加する多くのコントロールの基本クラスです。Control クラスはほとんど動作を定義しません。アプリケーションに Control を追加することもできますが、Button や ListBox など、Control を継承するコントロールを追加する方がはるかに一般的です。

Backgroundまた、FontFamily、、 などの依存関係プロパティも追加しますForeground。これらは、 にあるすべてのコントロールで使用できますSystem.Windows.Controls。プロパティの完全なリストはこちらです。ControlTemplateまた、 を使用して外観を定義するユーザー インターフェイス (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 に答える