gpt4 book ai didi

c# - 如何自定义绘制 GridSplitter

转载 作者:行者123 更新时间:2023-11-30 18:46:12 27 4
gpt4 key购买 nike

我正在从 WinForms 迁移到 WPF,我需要自定义绘制一个 gridsplitter,如下所示。这是我的 WinForms 实现:

enter image description here

在 WinForms 中很容易实现。我继承自 Splitter 类,只是重写了 OnPaint() 方法。

现在,我正在尝试弄清楚如何继续。我不知道如何在 XAML 中使用控件模板,因为我需要在用户移动滚动条时重新绘制形状。看来我需要在后面写代码,但我不知道如何进行。

我该如何继续?一个简单的示例,例如从 (0,0)(gridsplitter.right, gridsplitter.bottom) 画一条线会有所帮助。

最佳答案

最后,我创建了一个 Canvas 派生类来执行渲染:

public class DiffSplitterCanvas : Canvas
{
public DiffSplitterCanvas()
{
this.SnapsToDevicePixels = true;
}

protected override void OnRender(DrawingContext dc)
{
base.OnRender(dc);
// draw your stuff here
}
}

并将其作为 XAML 代码中的控件模板进行引用:

<GridSplitter Grid.Column="1" Width="50" HorizontalAlignment="Stretch">
<GridSplitter.Template>
<ControlTemplate TargetType="{x:Type GridSplitter}">
<custom:DiffSplitterCanvas/>
</ControlTemplate>
</GridSplitter.Template>
</GridSplitter>

关于c# - 如何自定义绘制 GridSplitter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30081934/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com