Border は Control から派生していないため、これはどのように機能しますか?
<Border.Style>
<Style>
<Style.Setters>
<Setter Property="Control.Background" Value="LightBlue"/>
</Style.Setters>
</Style>
</Border.Style>
Border は Control から派生していないため、これはどのように機能しますか?
<Border.Style>
<Style>
<Style.Setters>
<Setter Property="Control.Background" Value="LightBlue"/>
</Style.Setters>
</Style>
</Border.Style>
Background
WPF の依存関係プロパティは、多くのクラスで共有されます。クラスで定義され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));
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
。