如何重用WPF ScrollViewer来创建自己的可滚动控件?

时间:2009-08-31 13:21:12

标签: c# .net wpf scrollview

我正在尝试改进Graph#附带的图形绘制控件。这很好,但是当你开始拖动节点时,事情就会失控。这是我第一次遇到WPF,所以这可能是一个新手问题。 :)

我有GraphCanvas控件,它上面有节点和边。它们可以被拖动,改变它们的坐标,可能使它们变为负数。我想向控件添加滚动条,这样可以看到画布有多大。

为此,我正在考虑将GraphCanvas放在ScrollViewer中。如果不是针对一个问题,这将是非常简单和直接的。当一个节点被拖到边界之外时,我可能无法调整GraphCanvas本身的大小,否则这会拖得很糟糕。这也是原始控件的问题(检查出来,它带有一个示例应用程序)。

如果我可以将滚动条大小/位置绑定到GraphCanvas的属性会很好,这样ScrollViewer就不会在物理上滚动任何东西,只是设置GraphCanvas的属性。这反过来会执行所有实际的计算和滚动。

如何做到这一点?

2 个答案:

答案 0 :(得分:1)

好的,我找到了!三个简单的步骤:

  1. 在您的自定义控件上实施System.Windows.Controls.Primitives.IScrollInfo;
  2. 将自定义控件添加到ScrollViewer;
  3. CanContentScroll上的ScrollViewer属性设置为True
  4. 瞧!

答案 1 :(得分:0)

直接从MSDN查看此链接。它讨论了将几个控件组合到一个复合控件中:

WPF: Customizing Controls for Windows Presentation Foundation