WPF从代码后面设置命名样式元素?

栏目: 编程工具 · 发布时间: 7年前

内容简介:我有一个用户控件,它将样式应用于按钮,样式包含ControlTemplate部分.在ControlTemplate中,有各种UI元素,如Ellipse和Path.如果我给这些元素 – Ellipse和Path – 一个带x:Name的名称,我可以从后面的代码中访问它们吗?看起来样式的Ellipse和Path不可见,因为我收到编译错误(C#).

我有一个用户控件,它将样式应用于按钮,样式包含ControlTemplate部分.在ControlTemplate中,有各种UI元素,如Ellipse和Path.

如果我给这些元素 – Ellipse和Path – 一个带x:Name的名称,我可以从后面的代码中访问它们吗?

看起来样式的Ellipse和Path不可见,因为我收到编译错误(C#).

我是以错误的方式来做这件事的吗?

由于模板可以多次实例化,因此无法通过x:Name绑定生成的成员.相反,您必须在应用于控件的模板中找到命名元素.

给出简化的XAML:

<ControlTemplate x:Key="MyTemplate">
    <Ellipse x:Name="MyEllipse" />
</ControlTemplate>

你会做这样的事情:

var template = (ControlTemplate)FindResource("MyTemplate");

template.FindName("MyEllipse", myControl);

甚至更简单:

var ellipse = (Ellipse)myControl.Template.FindName("MyEllipse", myControl);

你可以阅读约 FrameworkTemplate.FindName .

一些例子和讨论 here , herehere .

翻译自:https://stackoverflow.com/questions/1521964/wpf-set-named-style-elements-from-code-behind


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

精益创业

精益创业

[美] 埃里克·莱斯 / 吴彤 / 中信出版社 / 2012-8 / 49.00元

《精益创业:新创企业的成长思维》内容简介:我们正处在一个空前的全球创业兴盛时代,但无数创业公司都黯然收场,以失败告终。精益创业代表了一种不断形成创新的新方法,它源于“精益生产”的理念,提倡企业进行“验证性学习”,先向市场推出极简的原型产品,然后在不断地试验和学习中,以最小的成本和有效的方式验证产品是否符合用户需求,灵活调整方向。如果产品不符合市场需求,最好能“快速地失败、廉价地失败”,而不要“昂贵......一起来看看 《精益创业》 这本书的介绍吧!

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具