C# .Net为什么把Shape加到VisualCollection不显示

caiqimin__ 2012-03-26 09:18:27
各位仁兄,我现在要把一个Shape rect元素加入到一个从Adorner继承过来的类BaseGraphTool中,BaseGraphTool中用一个VisualCollection对象存储这个rect,然后我又要把A加入到另一个从Adorner继承过来的类BaseManipulator中,但是现在的问题是类BaseManipulator显示了,但加到类BaseManipulator中的BaseGraphTool却没有显示,希望各位仁兄给出高见,在下感激涕零。以下是具体代码:
public class BaseGraphTool:Adorner
{
protected VisualCollection visualChildren;

public BaseGraphTool():base(new UIElement())
{
Initialize();
}
public BaseGraphTool(UIElement e):base(e)
{
Initialize();
}
void Initialize()
{
visualChildren=new VisualCollection(this);
visualChildren.Clear();
Rectangle rect = new Rectangle();
Canvas.SetLeft(rect, 0);
Canvas.SetTop(rect, 0);
rect.Width = 50;
rect.Height = 20;
rect.Fill = Brushes.Red;
rect.Stroke = Brushes.Black;
rect.Stretch = Stretch.Fill;
visualChildren.Add(rect);
}

protected override int VisualChildrenCount
{
get
{
return visualChildren.Count;
}
}
protected override Visual GetVisualChild(int index)
{
return visualChildren[index];
}
}
/////////////////////////////////////////////////////////////////////////////////////////

public class BaseManipulator :Adorner
{

/// <summary>
/// Container for manipulator controlls
/// </summary>
protected VisualCollection visualChildren;
/// <summary>
///
/// </summary>
protected System.Windows.Controls.Canvas mainCanvas;
/// <summary>
///
/// </summary>
/// <param name="element"></param>
public BaseManipulator(UIElement element)
: base(element)
{
if (!(AdornedElement.RenderTransform is TransformGroup))
{
TransformGroup t = new TransformGroup();
t.Children.Add(new MatrixTransform());
t.Children.Add(new RotateTransform());
AdornedElement.RenderTransform = t;
AdornedElement.RenderTransformOrigin = new Point(0.5, 0.5);

}
ThumbsResources tr = new ThumbsResources();
tr.InitializeComponent();
Resources = tr;
this.Visibility = Visibility.Collapsed;
visualChildren = new VisualCollection(this);
BaseGraphTool b=new BaseGraphTool();
visualChildren.Add(b);


}
/// <summary>
///
/// </summary>
protected override int VisualChildrenCount { get { return visualChildren.Count; } }
/// <summary>
///
/// </summary>
/// <param name="index"></param>
/// <returns></returns>
protected override Visual GetVisualChild(int index) { return visualChildren[index]; }
}
...全文
153 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuchun1 2012-03-28
  • 打赏
  • 举报
回复
1、按照类BaseManipulator,改 BaseGraphTool
2、不要把BaseGraphTool加到BaseManipulator,直接按照BaseManipulator方式显示BaseGraphTool
nonocast 2012-03-26
  • 打赏
  • 举报
回复
看一下VisualTree是否生成,以及对应的template
冰镇宝贝321 2012-03-26
  • 打赏
  • 举报
回复



那么长 帮顶
caiqimin__ 2012-03-26
  • 打赏
  • 举报
回复
怎么建立template,望仁兄指导指导

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧