2012-09-11 37 views
2

因此,在WPF和Silverlight中,您可以使用TextBox.CaretBrush設置文本框的插入符號顏色,但在WinRT中,它們似乎以他們所有的智慧刪除了該屬性。所以現在如果TextBox是深色的,因爲它默認插入符的顏色爲黑色,所以你看不到它,並且如果TextBox的背景顏色是黑色,那麼插入符號就不會完全存在。我發現這完全不合邏輯,有沒有一種方法可以改變俗話的顏色,或者是實際的或者是某種東西?在WinRT中更改插入符號的顏色?

有沒有人有任何想法?

+0

聽起來像你只需要編輯控件模板中的正確屬性。我相信對於WinRT來說,它就像* generic.xaml,但我不積極,這是正確的資源字典,因此不作爲答案,雖然我很確定這就是你需要做的。 –

回答

0

我通過覆蓋TextBox的一個透明畫布,使用SelectionStart和GetRectFromCharIndex獲取座標,然後在KeyDown,KeyUp和MouseDown上設置座標並使用TranslateTransform移動它,工作偉大和性能是太棒了!

不知道爲什麼我沒有嘗試這第一次,我已經做了多次Silverlight和WPF中的變換。我猜WinRt中的細微差別讓我陷入了一個循環......

+0

我想補充一點,對於多行文本框,這是行不通的,因爲GetRectFromCharIndex不會爲您提供正確的Y座標,並且在添加文本之前沒有文本。但它的確適用於單行文本框有一個警告。您需要使用Dispatcher.AcceleratorKeyPressed用於Left/Right/End/Home等。鍵作爲KeyDown爲TextBox不觸發這些鍵(也奇怪的行爲國際海事組織)。 – emalamisura

+0

我可能會嘗試在HTML 5版本的Metro應用程序中執行此操作,因爲我認爲這樣做會相當容易,因爲WinRT版本的XAML是完全垃圾... – emalamisura

+0

請您分享您的解決方案嗎?我需要做類似的事情,並且很好奇你是如何做到的。 謝謝! – Maximus

3

這是不可能的。您need to當您的TextBox具有焦點時,將其切換爲淺色背景,以便插入符號可見。

+0

這不限於我希望在我的應用程序中生成的用戶體驗,也不是可接受的答案。我在發佈我的問題之前找到了答案,相信我,當我說谷歌沒有這個答案時...... – emalamisura

+1

好吧,如果羅布說你需要使用一種解決方法 - 基本上意味着它不可能改變它,所以這是你將得到的唯一答案。除非有一些破解。您可以在「c:\ Program Files(x86)\ Windows Kits \ 8.0 \ Include \ WinRT \ Xaml \ Design \ themeresources.xaml」中找到的themeresources.xaml文件沒有提到插入符號,因此Chris的評論不是一個好答案這裏。 –

+0

我實際上傾向於計算插入符號的x,y位置,並在此處顯示我自己的自定義drawable。 – emalamisura

1

在這個問題上,晚了一點,但我遇到了同樣的問題,並發現了一個簡單的解決方法。在Windows 8.1 RT預覽中,我注意到重寫TextBoxForegroundThemeBrush會更改TextBox的插入符或光標顏色。

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

即使覆蓋Style和ControlTemplate,通常光標始終是黑色的。我偶然發現了上面提到的Filip提到的ThemeResources.xaml。我不確定這是否適用於8.1之前的版本,微軟似乎已經在新的SDK中進行了大量的清理。

+0

這似乎不適用於我。我使用的是Windows 8.1並設置TextBoxForegroundThemeBrush,但插入符仍然是黑色的。我試圖在ThemeResources.xaml文件中更改它,或者在我的頁面資源中覆蓋它,但無濟於事。我錯過了什麼?你有沒有在Windows 8.1的最終版本中使用它? – Raf