2013-10-06 121 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

當代碼位於Themes文件夾中的Generic.xaml文件中時,這不起作用。 –