c# - 使用 Visuals 将 WPF 控件 (ComboBox) 放入 Canvas 中

标签 c# wpf canvas

我正在编写 WPF 图表并使用 Visuals 来提高性能。代码如下:

public class DrawingCanvas2 : Canvas
{
    private List<Visual> _visuals = new List<Visual>();

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

    public void AddVisual( Visual visual )
    {
        _visuals.Add( visual );

        base.AddVisualChild( visual );
        base.AddLogicalChild( visual );
    }
}

除了 DrawingVisual 元素(线条、文本)之外,我还需要图表中的 ComboBox。所以我尝试了这个:

    public DrawingCanvas2()
    {
        ComboBox box = new ComboBox();
        AddVisual( box );

        box.Width = 100;
        box.Height = 30;

        Canvas.SetLeft( box, 10 );
        Canvas.SetTop( box, 10 );
    }

但它不起作用,没有显示组合框。我缺少什么?

最佳答案

您是否考虑过将 ComboBox 与 DrawingCanvas2 一起放在容器 Panel 中,并按照 z 顺序放在 DrawingCanvas2 之上?

这样,您的 DrawingCanvas2 就可以专注于绘制视觉效果,而您的 ComboBox 将表现得开箱即用。

关于c# - 使用 Visuals 将 WPF 控件 (ComboBox) 放入 Canvas 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2405403/

相关文章:

c# - Func Invoke,有没有更好的解决办法

c# - 以编程方式在 WPF ControlTemplate 中创建 Storyboard

c# - 统一网格作为 ItemsControl 中所有项目的面板模板,第一个除外

c# - 尝试删除多对多关系中两个对象之间的连接时出现的问题

c# - 如何调试托管堆中的损坏

c# - 为 IComparer<DictionaryEntry> 实现 IComparer<T>

android - 当文本未完全在 View 内绘制时,为什么 Canvas.drawText 会变慢?

javascript - HTML5 Canvas : Toggle between color/grayscale image

javascript - 有没有一种解决方法可以从 casperjs 中的 Canvas base64 图像获取 context.getImageData() ?

c# - If/else 语句 ASP.NET C#