すべての WPF ウィンドウのすべてのコントロールにデフォルトのマージンを設定するにはどうすればよいでしょうか? 質問する

すべての WPF ウィンドウのすべてのコントロールにデフォルトのマージンを設定するにはどうすればよいでしょうか? 質問する

すべてのウィンドウに配置したすべてのコントロールにデフォルトのマージン 3 を設定し、ごく少数の項目に対してのみこの値を上書きできるようにしたいと考えています。

スタイルを設定するなどのアプローチをいくつか見たことがありますが、その場合、すべてのスタイルを設定する必要があります。すべてのコントロールに対してまとめて実行できる方法の方が望ましいです。MarginSetter のようなものも見たことがありますが、サブパネルをトラバースしないようです。マージンをウィンドウに配置したコントロールにのみ適用し、ビジュアル ツリーの境界やその他の要素には適用しません。

私にはかなり基本的なもののように見えます。何かアイデアはありますか?

前もって感謝します。

ベストアンサー1

私が見つけた唯一の解決策は、ウィンドウで使用している各コントロールにスタイルを適用することです (それがあなたの希望どおりではないことは承知しています)。数種類のコントロール タイプのみを使用している場合は、次のようにしてもそれほど面倒ではありません。

<Window x:Class="WpfApplication7.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
        <!-- One style for each *type* of control on the window -->
        <Style TargetType="TextBox">
            <Setter Property="Margin" Value="10"/>
        </Style>
        <Style TargetType="TextBlock">
            <Setter Property="Margin" Value="10"/>
        </Style>
    </Window.Resources>
    <StackPanel>
        <TextBox Text="TextBox"/>
        <TextBlock Text="TextBlock"/>
    </StackPanel>
</Window>

幸運を...

おすすめ記事