因此,在 WPF 和 Silverlight 中,您可以使用 TextBox.CaretBrush 为 TextBox 设置插入符号颜色,但在 WinRT 中,他们似乎完全明智地删除了此属性。所以现在如果 TextBox 是深色,因为它默认插入符号颜色为黑色,你看不到它,如果 TextBox 的背景颜色是黑色,插入符号完全不存在。我觉得这完全不合逻辑,必须有一种方法来改变插入符号的颜色,无论是务实还是其他?
有没有人有任何想法?
因此,在 WPF 和 Silverlight 中,您可以使用 TextBox.CaretBrush 为 TextBox 设置插入符号颜色,但在 WinRT 中,他们似乎完全明智地删除了此属性。所以现在如果 TextBox 是深色,因为它默认插入符号颜色为黑色,你看不到它,如果 TextBox 的背景颜色是黑色,插入符号完全不存在。我觉得这完全不合逻辑,必须有一种方法来改变插入符号的颜色,无论是务实还是其他?
有没有人有任何想法?
这是不可能的。您需要在 TextBox 具有焦点时将其切换为浅色背景,以便插入符号可见。
在这个问题上晚了一点,但我遇到了同样的问题并找到了一个简单的解决方法。在 Windows 8.1 RT 预览中,我注意到覆盖 TextBoxForegroundThemeBrush 会更改 TextBox 的插入符号或光标颜色。
<SolidColorBrush x:Key="TextBoxForegroundThemeBrush" Color="#FFFFFFFF" />
通常,光标始终为黑色,即使您覆盖了 Style 和 ControlTemplate。通过查看 Filip 上面提到的 ThemeResources.xaml,我偶然发现了这一点。我不确定这是否适用于 8.1 之前的 xaml,微软似乎已经在新的 SDK 中清理了很多。
我通过在 TextBox 上方覆盖透明画布来实现此功能,使用 SelectionStart 和 GetRectFromCharIndex 获取坐标,然后在 KeyDown、KeyUp 和 MouseDown 上设置 Line 的坐标并使用 TranslateTransform 移动它,效果很好,性能很好极好的!
不知道为什么我不先尝试这个,我之前在 Silverlight 和 WPF 中做过很多次变换。我想 WinRt 的细微差别让我陷入了一个循环......