wpf create style for named element

Dr_*_*klo 5 c# wpf xaml

Is it possible to add style to xaml element without editing the element?

for example:

xaml element:

<Grid>
     <Grid x:Name="A">content A</Grid>
     <Grid x:Name="B">content B</Grid>
</Grid>
Run Code Online (Sandbox Code Playgroud)

and style:

<Style x:Key="StyleForA" TargetName="A" TargetType="{x:Type Grid}" >
   <Setter Property="Background" Value="Red"/>
</Style>
<Style x:Key="StyleForB" TargetName="B" TargetType="{x:Type Grid}" >
   <Setter Property="Background" Value="Green"/>
</Style>
Run Code Online (Sandbox Code Playgroud)

UPD: I have a project with a lot of styles (aero, black, etc ).

And if I edit the element Style="{StaticResources StyleForA}" I must edit all styles. So I need to create local style that affected to named element.

小智 0

是的。我在 App.xaml 上使用此样式在所有应用程序控件周围添加一个模板,但出现错误:

<Style x:Key="BordaTemplate" TargetType="Control">
        <Setter Property="Validation.ErrorTemplate">
            <Setter.Value>
                <ControlTemplate>
                    <DockPanel LastChildFill="True">                           
                        <Border BorderBrush="Red" BorderThickness="1">                           
                            <AdornedElementPlaceholder Name="myControl"/>
                        </Border>
                    </DockPanel>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
        <Style.Triggers>
            <Trigger Property="Validation.HasError" Value="true">
                <Setter Property="ToolTip"
                    Value="{Binding RelativeSource={x:Static RelativeSource.Self},
                    Path=(Validation.Errors).CurrentItem.ErrorContent}"/>
            </Trigger>
        </Style.Triggers>
    </Style>


 <Style TargetType="TextBox" BasedOn="{StaticResource BordaTemplate}" />        
        <Style TargetType="PasswordBox" BasedOn="{StaticResource BordaTemplate}" />
        <Style TargetType="DataGrid" BasedOn="{StaticResource BordaTemplate}" />
        <Style TargetType="ListBox"  BasedOn="{StaticResource BordaTemplate}" />
    <Style TargetType="CheckBox" BasedOn="{StaticResource BordaTemplate}" />
    <Style TargetType="ComboBox" BasedOn="{StaticResource BordaTemplate}" />
    <Style TargetType="DatePicker"  BasedOn="{StaticResource BordaTemplate}" />   
Run Code Online (Sandbox Code Playgroud)