2013-10-06 2 views
0

Если у меня есть стиль, который определяет шаблон управления, и у меня есть элемент управления, допустим, кнопка, есть ли способ получить доступ к кнопке из кода за стилем управления?Контроль доступа в стиле от кода

Спасибо, ребята! =)

+0

Что вы пробовали? –

ответ

5

Скажем, у вас стиль определяется следующим

 <Style x:Key="myStyle" TargetType="{x:Type Button}"> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate> 
         <Button x:Name="myTemplatedButton" Content="my templated button"/> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 

И применить его к кнопке

<Button x:Name="myButton" Content="my default button" Style="{StaticResource myStyle}"/> 

Вы можете получить доступ к кнопке в шаблоне управления следующим

var myTemplatedButton = myButton.Template.LoadContent() as Button; 

Если кнопка помещена в контейнер внутри ControlTemplate, например StackPanel:

<StackPanel> 
    <CheckBox IsChecked="True"/> 
    <Button x:Name="myTemplatedButton" Content="my templated button"/> 
</StackPanel> 

Вы можете извлечь основной контейнер и использовать FindName метод, чтобы получить шаблонную кнопку

var templatedControl = myButton.Template.LoadContent() as FrameworkElement; 
var templatedButton = templatedControl.FindName("myTemplatedButton") as Button; 

Надеется, что это помогает

+0

спасибо, что вы человек! =) – Sergio

+0

Это не работает, когда этот код находится в файле Generic.xaml в папке «Темы». –