マージンとパディングはContentControlによって実装されていますか?
-
19-08-2019 - |
質問
System.Windows.Controls.ContentControlから派生したカスタムコントロールを開発しています。コントロールのデフォルトテンプレート(themes \ generic.xaml)では、実際のコンテンツをラップするBorder要素を使用します。
カスタムコントロールは既にマージンとパディングを実装していますか(つまり、カスタムコントロールに設定されたパディングに従って境界線を縮小します)、またはマージンとパディングを適用する場所を自分で決定しますか(つまり、マージンとパディングを設定します) {TemplateBinding Margin}
などへのborder要素のプロパティ
事前に感謝します!
解決
Marginが実装されているFramework要素でずっと下にあると思います。ただし、パディングはそうではありません。 ContentControlには<!> quot; PaddingProperty <!> quot;があります。しかし、デフォルトでは何もしません。基本的に、コンテンツのMarginPropertyをコンテンツコントロールのPaddingプロパティにバインドします。
他のヒント
ContentControlのスタイルを定義し、テンプレートで定義されたContentPresenterの余白にPaddingをバインドすることで問題を解決しました。
<Style TargetType="{x:Type ContentControl}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ContentControl}">
<ContentPresenter Margin="{TemplateBinding Padding}"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
これはおそらく他の人に役立つでしょう。
所属していません StackOverflow