2013-08-08 2 views
0

Я хочу получить элемент в шаблоне управления из кода позади.Как получить элемент в шаблоне управления в Silverlight?

В XAML ниже я хочу, чтобы получить Пограничный элемент «btnBorder» и изменить цвет от красного до любого другого цвета из кода за.

<Window x:Class="WpfApplication4.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525"> 
    <Grid> 

     <StackPanel  
      Name ="st" 
       Margin="0,3,0,3" 
       Grid.Row="4" 
       Orientation="Horizontal"> 
      <Button Name="btn" Height="22" Margin="0,0,25,0"> 
       <Button.Template x:Uid="dd"> 
        <ControlTemplate x:Name="tmp" TargetType="Button"> 
         <Border x:Name="btnBorder" Background="Red"> 
          <ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center" />        
         </Border> 
        </ControlTemplate> 
       </Button.Template> 

       Test Button 
      </Button> 

     </StackPanel> 


    </Grid> 
</Window> 

Я попробовал различные методы, как

GetTemplateChild ("btnBorder") объекта о = template.FindName ("btnBorder", this.btn);

но эти методы возвращают null.

Пожалуйста, сообщите мне, где я делаю неправильно, или что является правильным способом доступа к шаблону ребенка из кода позади?

ответ

0

Вы можете установить BorderBrush вашего Button и связать его с BorderBrush из Border контроля в ControlTemplate.

Так что, когда вы будете устанавливать BorderBrush для вашего Button из кода позади будет отражать в нижележащие связывания и так далее вашего Border контроля в ControlTemplate.

<Page.Resources> 
    <Style x:Key="MyButtonStyle" TargetType="Button"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="Button"> 
        <Border x:Name="btnBorder" 
          BorderBrush="{TemplateBinding BorderBrush}" 
          BorderThickness="{TemplateBinding BorderThickness}" 
          Background="{TemplateBinding Background}"> 
         <ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center"/>        
        </Border> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</Page.Resources> 

Это, как вы можете применить Style

<StackPanel> 

<Button Style={StaticResource MyButtonStyle} Name="btn1" Content="Test Button 1" 
     BorderBrush="Red"/> 

<Button Style={StaticResource MyButtonStyle} Name="btn2" Content="Test Button 2" 
     BorderBrush="Green"/> 

</StackPanel> 
+0

Спасибо за ответ Nitesh но у меня есть 7-8 экземпляра этой кнопки, то как я могу различать между этими экземплярами .. Я имею в виду мне нужно иметь разные цвета для разных кнопок. –

+0

Итак, создайте стиль и примените его к своим кнопкам. – Nitesh

+0

@ashishsaxena: Пожалуйста, проверьте обновленный ответ. – Nitesh

Смежные вопросы