如何将Caret分配给WPF中的Control

时间:2009-07-19 20:35:57

标签: wpf user-controls wpf-controls caret

需要制作新的WPF控件并将Caret赋予它。 在WINFORMS或previos Windows UI中,使用WIN API Caret函数很容易,但现在在WPF中我们没有每个控件的hwnd所以......有没有办法做到这一点?

2 个答案:

答案 0 :(得分:3)

在WPF中,插入符实际上是CaretElement,一个用于渲染选择块和插入符的内部FrameworkElement。

如果你没有继承某种已经提供插入符号支持并试图操纵它的控件,可悲的是,你可能需要从头开始实现它。

修改

CaretElement是框架内部的,是的,没有记录。

例如,提到here

commercial包中存在闭源自定义实现。

答案 1 :(得分:1)

WPF中的Caret只是另一个动画,没有特殊的API。绘制一条线,并使用DoubleAnimation更改其不透明度。

如果你仔细看看WPF TextBox,插入符号甚至不会进行“像素反转”,它只是在字母上绘制的灰线。

通过实现像素着色器效果,您可以在WPF中进行像素反转。可能不值得。 VS2010 beta不会对文本插入符进行反转。

除TextBox / RichTextBox外,您还可以找到3个其他编辑组件:

  • Expression Blend代码编辑器
  • Visual Studio 2010代码编辑器
  • SharpDevelop 4代码编辑器