如果我有一个定义控件模板的样式,并且在其中我有一个控件,比如说一个按钮,有没有办法从样式化控件后面的代码中访问该按钮?
谢谢你们! =)
最佳答案
假设你有一个样式定义如下
<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;
希望对你有帮助
关于wpf - 代码风格的访问控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19208964/