wpf - 代码风格的访问控制

标签 wpf styles code-behind controltemplate

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

谢谢你们! =)

最佳答案

假设你有一个样式定义如下

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

相关文章:

带有箭头样式的 WPF 弹出窗口

reactjs - MaterialUI 自定义悬停样式

c# - 我可以从后面的 C# 代码更新 WPF 绑定(bind)的值吗?

asp.net - 如何从代码隐藏访问非asp <img> 标签?

.net - MVVM 模式中代码隐藏的实用使用

c# - 组合框无法准确获取数据库值

c# - 创建可重用的 WINDOW 控件

wpf - 在 WPF 中,是否可以为单个事件触发器指定多个路由事件?

javascript - 内存问题 - Webkit 是否缓存元素的 CSS 样式?

wpf - 首次加载时的验证绑定(bind)