WPF - How to apply style to AdornedElementPlaceholder's AdornedElement?

前端 未结 1 1635
我寻月下人不归
我寻月下人不归 2021-01-19 01:13

I\'m trying to apply a style to an adorned element, but I don\'t know the correct syntax. Here is what I\'ve tried:

相关标签:
1条回答
  • 2021-01-19 02:04

    Need to put where the resource is coming from.

    <TextBox Style="{StaticResource textStyleTextBox}"/>
    

    Then define the style in a resource such as the user control resources:

    <UserControl.Resources>
      <Style TargetType="TextBox" x:Key="textStyleTextBox">
        <Setter Property="Background" Value="Blue"/>
      </Style>
    </UserControl.Resources>
    

    However I dont believe you want to set the style of the adornedelement within the placeholder. It's just a placeholder for any control with that template. You should set the style of the adornedelement in the element itself like the example I provided above. If you want to style the control based upon it's validation then something like this:

    <Window.Resources>
       <ControlTemplate x:Key="validationTemplate">
           <DockPanel>
               <TextBlock Foreground="Yellow" Width="55" FontSize="18">!</TextBlock>
               <AdornedElementPlaceholder/>
           </DockPanel>
       </ControlTemplate>
       <Style x:Key="textBoxInError" TargetType="{x:Type TextBox}">
           <Style.Triggers>
               <Trigger Property="Validation.HasError" Value="true">
                   <Setter Property="Background" Value="Red"/>
                   <Setter Property="Foreground" Value="White"/>
               </Trigger>
           </Style.Triggers>
       </Style>
    </Window.Resources>
    <StackPanel x:Name="mainPanel">
        <TextBlock>Age:</TextBlock>
        <TextBox x:Name="txtAge"
                 Validation.ErrorTemplate="{DynamicResource validationTemplate}"
                 Style="{StaticResource textBoxInError}">
             <Binding Path="Age" UpdateSourceTrigger="PropertyChanged" >
                 <Binding.ValidationRules>
                     <ExceptionValidationRule/>
                 </Binding.ValidationRules>
             </Binding>
        </TextBox> 
    </StackPanel>
    
    0 讨论(0)
提交回复
热议问题