2017-07-18 6 views
3

(およびその他のコントロール)と左揃えになるように、左側のサイドバーの(最初のStackPanel)にそれぞれPadding="0"を適用します。コンテナ内の暗黙のスタイル

<ApplicationResources>で暗黙のスタイルを定義するには、特定のコンテナ内の要素にのみ適用できますか?

代替:

  1. 使用x:Key="sidebarLabel"。しかし、このオプションは、実際のアプリケーションのサイドバーにある多くのラベルでは冗長に見えます。
  2. サイドバーの各LabelPadding=0を追加します。これは、前の選択肢と本質的に同じです。
  3. 暗黙のスタイルを<StackPanel.Resources>に移動します。しかし、XAML(MainWindow.xaml)とは別のスタイル(App.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> 

答えて

3

あなたは、このようにapp.xamlでStyle.Resourcesを使用することができます。

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

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

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

をラベルスタイルを使用します。

関連する問題