嗨我有一个带有画布的C#应用程序。我想以编程方式在其上放置一个文本框(带有文本)。我已经尝试过并试过但我得到的是一个完全透明的矩形,我的文本框应该是。是我还是这是一个众所周知的困难?
更新: 我应该提到..(对不起!)我也在这个对象中重写OnRender:
protected override void OnRender(DrawingContext drawingContext)
{
drawingContext.PushTransform(TransformRotation);
Draw(drawingContext);
drawingContext.Pop();
}
和Draw实现如下:
public override void Draw(DrawingContext drawingContext)
{
Rect graphicRectangle = Rectangle;
ITransform2d transformToDisplay = Layer.TransformToDisplay;
if (transformToDisplay != null)
{
graphicRectangle = new Rect(transformToDisplay.Transform(Rectangle.TopLeft),
transformToDisplay.Transform(Rectangle.BottomRight));
}
textBox.Height = graphicRectangle.Height;
textBox.Width = graphicRectangle.Width;
Canvas.SetLeft(textBox, graphicRectangle.Left);
Canvas.SetTop(textBox, graphicRectangle.Top);
}
答案 0 :(得分:1)
Canvas是一个面板,其目的是安排和显示某种内容,我建议您不要做这样的事情。
如果您需要使用带有TextBox的Canvas组合,例如在Canvas上方或下方创建一个带有TextBox的UserControl
,并在UserControl的界面上公开相关的属性和方法。
使用Panel元素在Windows Presentation Foundation(WPF)应用程序中定位和排列子对象。 - MSDN