我正在从WinForms迁移到WPF,并且需要自定义绘制网格拆分器,如下所示。这是我的WinForms实现:
在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/