如何将文本框添加到画布

时间:2011-08-31 15:14:05

标签: c# wpf canvas textbox

嗨我有一个带有画布的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);
    }

1 个答案:

答案 0 :(得分:1)

Canvas是一个面板,其目的是安排和显示某种内容,我建议您不要做这样的事情。

如果您需要使用带有TextBox的Canvas组合,例如在Canvas上方或下方创建一个带有TextBox的UserControl,并在UserControl的界面上公开相关的属性和方法。


  

使用Panel元素在Windows Presentation Foundation(WPF)应用程序中定位和排列子对象。 - MSDN