Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 在WinRT中更改插入符号颜色?_Wpf_Silverlight_Microsoft Metro_Windows Runtime - Fatal编程技术网

Wpf 在WinRT中更改插入符号颜色?

Wpf 在WinRT中更改插入符号颜色?,wpf,silverlight,microsoft-metro,windows-runtime,Wpf,Silverlight,Microsoft Metro,Windows Runtime,因此,在WPF和Silverlight中,您可以使用TextBox.CaretBrush设置TextBox的插入符号颜色,但在WinRT中,他们似乎明智地删除了这个属性。所以现在如果文本框是深色,因为它默认插入符号颜色为黑色,你看不到它,如果文本框的背景色是黑色,插入符号就完全不存在了。我觉得这完全不合逻辑,必须有一种方法来改变插入符号的颜色,不管是实用的还是其他的 有人有什么想法吗?这是不可能的。当文本框具有焦点时,您可以将其切换为浅背景,以便插入符号可见。这是不可能的。当文本框有焦点时,可以

因此,在WPF和Silverlight中,您可以使用TextBox.CaretBrush设置TextBox的插入符号颜色,但在WinRT中,他们似乎明智地删除了这个属性。所以现在如果文本框是深色,因为它默认插入符号颜色为黑色,你看不到它,如果文本框的背景色是黑色,插入符号就完全不存在了。我觉得这完全不合逻辑,必须有一种方法来改变插入符号的颜色,不管是实用的还是其他的


有人有什么想法吗?

这是不可能的。当文本框具有焦点时,您可以将其切换为浅背景,以便插入符号可见。

这是不可能的。当文本框有焦点时,可以将其切换为浅背景,以便插入符号可见。

我通过在文本框顶部覆盖一块透明画布,使用SelectionStart和GetRectFromCharIndex获取坐标,然后按下键,按下键,MouseDown我设置了一条线的坐标,并使用TranslateTransform移动它,效果非常好,性能非常好


不知道为什么我没有先尝试这个,我以前在Silverlight和WPF中做过多次转换。我猜WinRt中的细微差别让我有点不知所措……

我通过在文本框顶部覆盖一块透明画布,使用SelectionStart和GetRectFromCharIndex获得坐标,然后按下键、上键和鼠标向下键设置一条线的坐标,并使用TranslateTransform移动它,作品很棒,表演也很棒


不知道为什么我没有先尝试这个,我以前在Silverlight和WPF中做过多次转换。我想WinRt中的细微差别让我有点发疯了…

在这个问题上参加聚会有点晚,但我遇到了同样的问题,找到了一个简单的解决办法。在Windows8.1RT预览版上,我注意到覆盖TextBoxForeGroundTheMerrush会更改TextBox的插入符号或光标颜色

<SolidColorBrush x:Key="TextBoxForegroundThemeBrush" Color="#FFFFFFFF" />


通常,光标始终为黑色,即使覆盖样式和控件模板也是如此。我在查看Filip上面提到的ThemeResources.xaml时偶然发现了这一点。我不确定这是否适用于8.1 xaml之前的版本,微软似乎在新SDK中清理了很多东西。

在这个问题上参加聚会有点晚,但我遇到了同样的问题,找到了一个简单的解决方法。在Windows8.1RT预览版上,我注意到覆盖TextBoxForeGroundTheMerrush会更改TextBox的插入符号或光标颜色

<SolidColorBrush x:Key="TextBoxForegroundThemeBrush" Color="#FFFFFFFF" />


通常,光标始终为黑色,即使覆盖样式和控件模板也是如此。我在查看Filip上面提到的ThemeResources.xaml时偶然发现了这一点。我不确定这是否适用于8.1 xaml之前的版本,Microsoft似乎已经在新SDK中清理了很多内容。

听起来您只需要在控件模板中编辑正确的属性。我相信WinRT是在like*generic.xaml中,但我不能肯定这是正确的资源字典,因此不能作为答案,尽管我很确定这就是您需要做的所有事情。听起来您只需要在控件模板中编辑正确的属性。我相信WinRT是在like*generic.xaml中,但我不能肯定这是正确的资源字典,因此不能作为答案,尽管我很确定这就是您需要做的一切。这并不局限于我希望在应用程序中生成的用户体验,也不是一个可接受的答案。我在发布我的问题之前找到了答案,相信我,当我说谷歌没有这个答案的时候…好吧,如果Rob说你需要使用一个变通方法-这基本上意味着不可能改变它,所以这是你将得到的唯一答案。除非有黑客。您可以在“c:\Program Files(x86)\Windows Kits\8.0\Include\WinRT\xaml\Design\themeresources.xaml”中找到的themeresources.xaml文件没有提到插入符号,因此Chris的评论在这里不是一个好答案。实际上,我倾向于找出x,插入符号的y位置,并在此点显示我自己在这些坐标处的自定义绘图。见鬼,我甚至没有看到将对象绘制到对象上的方法,我开始认为WinRT在这里非常糟糕……这看起来很有希望,我将尝试此方法,如果可行,我将作为我的解决方案发布:(很明显,他正在用它画文本,我将用它画插入符号)这并不局限于我希望在我的应用程序中生成的用户体验,这不是一个可接受的答案。我在发布我的问题之前找到了这个答案,相信我,当我说谷歌没有这个答案时…好吧,如果Rob说你需要使用变通方法-这基本上意味着不可能更改它,因此这是唯一的解决方法除非有黑客攻击,否则您将得到。themeresources.xaml文件,您可以在“c:\Program Files(x86)\Windows Kits\8.0\Include\WinRT\xaml\Design\themeresources.xaml”中找到没有提到插入符号,所以Chris的评论在这里不是一个好的答案。我实际上倾向于计算插入符号的x,y位置,并在这一点上显示我自己的自定义可绘制坐标。见鬼,我甚至没有看到在物体上绘制对象的方法,我开始认为WinRT在这里非常糟糕……这看起来很有希望,我我试试这个,如果它有效,我会发布我的解决方案:(很明显,他正在用它画文本,我会用它画我的插入符号)我想补充一点,对于多行文本框,这不起作用,因为GetRectFromCharIndex不会为您提供新行的正确Y坐标,并且在添加文本之前不会在新行上显示任何文本。但对于单行文本框,这非常有效,但有一点需要注意。对于左/右/结束/主页等键,您需要使用Dispatcher.AcceleratoryPressed因为TextBox的KeyDown不会为这些键触发(在我看来也是奇怪的行为)。我可能会在HTML5版本的Metro应用程序中尝试这样做,因为我认为这会更容易,因为XAML的WinRT版本完全是垃圾…你能帮我个忙吗