3

左側のサイドバー (最初の) のPadding="0"それぞれに適用して、それぞれ(および他のコントロール) と左揃えにします。LabelStackPanelTextBox

<ApplicationResources>特定のコンテナー内の要素にのみ適用される暗黙的なスタイルを定義するにはどうすればよいですか?

代替案:

  1. を使用しx:Key="sidebarLabel"ます。ただし、このオプションは、実際のアプリケーションのサイドバーにある多くのラベルには冗長に思えます。
  2. Padding=0サイドバーのそれぞれに追加しますLabel。これは本質的に前の代替案と同じです。
  3. 暗黙的なスタイルを に移動し<StackPanel.Resources>ます。App.xamlただし、スタイル ( ) を XAML ( ) とは別に保持したいと考えていますMainWindow.xaml

 

<Application.Resources>
    <Style TargetType="{x:Type Label}">
        <Setter Property="Padding" Value="0" />
    </Style>
</Application.Resources>      

 

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="2*"/>
    </Grid.ColumnDefinitions>

    <StackPanel Grid.Column="0">
        <GroupBox Header="New User">
            <StackPanel>
                <Label>First Name:</Label>
                <TextBox/>
                <Label>Last Name:</Label>
                <TextBox/>
            </StackPanel>
        </GroupBox>
    </StackPanel>
    <GroupBox Grid.Column="1" Header="Main">
        <StackPanel>
            <Label>I want default padding here</Label>
        </StackPanel>
    </GroupBox>
</Grid>
4

1 に答える 1

4

Style.Resources次のように app.xaml で使用できます。

<Application.Resources>
    <Style TargetType="StackPanel">
        <Style.Resources>
            <Style TargetType="Label">
                <Setter Property="Padding" Value="0" />
            </Style>
        </Style.Resources>
    </Style>
</Application.Resources>

これはLabel.Style、 内で使用されるすべての を設定しStackPanelます。この動作を特定のラベルにのみ提供したい場合は、次StackPanelsのように使用できますx:Key

<Application.Resources>
    <Style TargetType="StackPanel" x:Key="LabelStyledPanel">
        <Style.Resources>
            <Style TargetType="Label">
                <Setter Property="Padding" Value="0" />
            </Style>
        </Style.Resources>
    </Style>
</Application.Resources>

次に、StackPanels使用するすべてStaticResource LabelStyledPanelのラベル スタイルを使用します。

于 2017-07-19T04:25:39.150 に答える