質問

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>

これはおそらく他の人に役立つでしょう。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top