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


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

查看所有标签

猜你喜欢:

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

维多利亚时代的互联网

维多利亚时代的互联网

[英] 汤姆·斯丹迪奇 / 多绥婷 / 后浪丨江西人民出版社 / 2017-8 / 38.00元

人类历史上的第一次大连接 回顾互联网的前世 预言互联网的未来 ……………… ※编辑推荐※ ☆《财富》杂志推荐的75本商务人士必读书之一 ☆ 回顾互联网的前世,颠覆你的思维,升级你对互联网的认知 ☆ 人类历史上一次全球大连接是维多利亚时期的电报时代,那时候也有疯狂的资本、 巨大的泡沫、网络新型犯罪、网络亚文化崛起……现在的互联网时代就是电报时代的重演;回顾那......一起来看看 《维多利亚时代的互联网》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

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

Markdown 在线编辑器