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>
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));
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。