0

ビュー全体のすべてのコントロールに一貫したマージンを設定したいと考えています。私は現在XAMLを使用しています:

<Window.Resources>
    <Thickness x:Key="ConsistentMargins">0,10,0,0</Thickness>
</Window.Resources>

<!-- ... -->
<!-- ... -->
<!-- ... -->

<MyControl1 Margin="{StaticResource ConsistentMargins}">
<MyControl2 Margin="{StaticResource ConsistentMargins}">
<MyControl3 Margin="{StaticResource ConsistentMargins}">

上記のコードの繰り返しを避けるために、コントロールのデフォルトのレイアウト スタイルを設定する方法はありますか?

4

2 に答える 2

1

で独自のスタイルを作成できます。TargetTypeこのスタイルは、で指定したタイプのすべてのオブジェクトに割り当てられますTargetType。ただし、この場合、作成したスタイルは指定されたタイプのオブジェクトにのみ適用され、派生タイプには適用されません。

たとえば、次のようにすべてのボタンのスタイルを作成できます。

<Style TargetType="{x:Type Button}">
    <Setter Property="Margin" Value="0,10,0,0" />
</Style>

「すべてのボタンが…のように見える」と言いたいのですが、「すべてが…のように見える」とは言いたくないので、基本クラスからスタイルを適用しないのは理にかなっていると思います。

于 2013-01-24T22:36:21.400 に答える
0

おそらく FrameworkElement の基本の既定のスタイルを作成し、他の要素の種類の既定のスタイルで基本のスタイルを拡張することができます。

<Window.Resources>
    <Style TargetType="FrameworkElement">
        <Setter Property="Margin" Value="0,10,0,0"/>
    </Style>
    <Style TargetType="TextBlock" BasedOn="{StaticResource {x:Type FrameworkElement}}"/>
    <Style TargetType="TextBox" BasedOn="{StaticResource {x:Type FrameworkElement}}"/>
    <Style TargetType="Label" BasedOn="{StaticResource {x:Type FrameworkElement}}"/>
    ...
</Window.Resources>
于 2013-01-24T22:39:57.970 に答える