来自代码的访问控制

时间:2013-10-06 12:41:03

标签: wpf styles code-behind controltemplate

如果我有一个定义控件模板的样式,并且我有一个控件,让我们说一个按钮,有没有办法从样式控件后面的代码访问该按钮?

谢谢你们! =)

1 个答案:

答案 0 :(得分:8)

假设你的风格定义如下

        <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;

希望这有帮助