views:

1166

answers:

1

i want to override element triggers so when clicking on a textbox to change property of the parent border. however i get that the parent targetname is not recognized. please help. code sample is this:

   <Style x:Key="customstyle" TargetType="{x:Type local:customcontrol}">
 <Setter Property="Background" Value="{StaticResource DownGradientBrush}"/>
 <Setter Property="BorderBrush" Value="{StaticResource DownGradientBorder}"/>
 <Setter Property="Foreground" Value="{StaticResource TextBoxForeground}"/>
    <Setter Property="HorizontalAlignment" Value="Center"/>
    <Setter Property="VerticalAlignment" Value="Center"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type local:customcontrol}">
                <Border x:Name="Bd"
      BorderBrush="{TemplateBinding BorderBrush}">
                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition/>
                            <RowDefinition/>
                        </Grid.RowDefinitions>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="*"/>
                            <ColumnDefinition Width="15"/>
                        </Grid.ColumnDefinitions>
                        <Border 
                            Grid.Column="0" 
                            Grid.RowSpan="2"
                        HorizontalAlignment="Stretch">
                            <TextBox x:Name="TextBox"
       Grid.Column="0" 
                                Grid.RowSpan="2"
                                Text="{Binding RelativeSource={x:Static RelativeSource.TemplatedParent}, Path=Value}"
                     Width="Auto"
                                Height="Auto">
   <TextBox.Style>
   <Style BasedOn="{StaticResource StyleTextBox}" TargetType="{x:Type TextBox}">                    <Style.Triggers>           <Trigger Property="IsFocused" Value="True">          <Setter TargetName="Bd" Property="Background" Value="{StaticResource CustomGradientBorder}" />           </Trigger>
           <Trigger Property="IsFocused" Value="True">

           </Trigger>
                   </Style.Triggers>
               </Style>
           </TextBox.Style>
       </TextBox>
                        </Border>
                    </Grid>
                </Border>
    <ControlTemplate.Triggers>
     <Trigger Property="IsFocused" Value="True">
                  <Setter TargetName="Bd" Property="BorderBrush" Value="{StaticResource CustomGradientBorder}" />
     </Trigger>
    </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
+2  A: 

change it like this:

<ControlTemplate.Triggers>
  <Trigger Property="IsFocused" Value="True" SourceName="TextBox">
    <Setter TargetName="Bd" Property="BorderBrush" Value="{StaticResource CustomGradientBorder}" />
  </Trigger>
</ControlTemplate.Triggers>
viky
Thanks, that did it alright :)
immuner