首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将ContentControl资源分配给继承的ContentControl元素

将ContentControl资源分配给继承的ContentControl元素
EN

Stack Overflow用户
提问于 2011-09-14 15:13:34
回答 1查看 131关注 0票数 0

我有麻烦了,我需要你的帮助。下面是我的代码:

代码语言:javascript
复制
public class CircleElement : ContentControl
{

public ContentControl me;
private FrameworkElement _parent;

public CircleElement()
{
  if (_parent != null)
  {
    me = (ContentControl)_parent.FindResource("CircleRes");
    me.Style = (Style)_parent.FindResource("CircleStyle");
  }

}

CircleElement继承了ContentControl,我想将资源"CircleRes“和样式"CircleStyle”赋给它。类似于:

代码语言:javascript
复制
this = (ContentControl)_parent.FindResource("CircleRes");
this.Style = (Style)_parent.FindResource("CircleStyle");

这个东西不是allowable.So为了解决这个问题我实例化了ContentControl me元素;但是代码有点乱!!如何让它变得更“优雅”?

提前感谢

保罗

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-14 16:14:19

你的要求有点奇怪,但它可以通过多种方式实现……

为什么不设置this控件的内容本身,而不是拥有另一个内容控件(即me)呢?

代码语言:javascript
复制
    this.Content
           = (ContentControl)_parent.FindResource("CircleRes"); 
    ((ContentControl)(this.Content)).Style
           = (Style)_parent.FindResource("CircleStyle"); //*** Potential problem

problem :潜在的问题语句以这种方式标记,因为您的代码(我的代码也是如此)通过引用将样式"CircleStyle"设置为"CircleRes"资源。

怎么做?me((ContentControl)(this.Content))只不过是"CircleRes"资源!

这意味着如果在其他地方引用"CircleRes",它将携带"CircleStyle"作为它自己的样式。如果你在其他地方设置了一些新的Style,那么它将覆盖使用Style of "CircleRes"的任何地方,包括上面的代码(其中预期的样式是"CircleStyle")

Solution:改用ContentTemplate。模板不会导致可视化的按实例引用。

因此,实际上您应该有一个类(比如"CircleResTemplate"),并将其设置为ContentTemplate to CircleElement类。

代码语言:javascript
复制
   this.ContentTemplate
       = (DataTemplate)_parent.FindResource("CircleResTemplate");
   this.Style
       = (Style)_parent.FindResource("CircleStyle"); 

如果这回答了你的问题,请让我知道。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7412553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档