2012-01-11 69 views
4

Silverlight TextBox中製表符(\ t)的寬度不等於4個空格或8個空格。太短了。 是否可以更改Silverlight TextBox中顯示的TAB(\ t)字符的寬度?如何更改silverlight TextBox中的製表符寬度

注意,我想避免用空格代替製表符。 關於如何做到這一點的任何想法?

回答

2

的Silverlight不允許你改變文本框的標籤字符長度。

如果在一個字符串(從文件或東西)你的閱讀和設置文本到它,然後,如果你看看你的Text屬性,你會看到逃脫標籤(\ t)。搜索\ t很容易

TabTextBox.Text = TabTextBox.Text.Replace("\t", " "); 

因此,這將用4個空格替換所有標籤。

除了在TextBox不會標籤文本壓片。它將把重點放在UIElement的下一個UIElement上。

+0

如果您正在做什麼美容美髮建議請確保您取消選項卡事件集中回到您的文本框。不知道你想達到什麼。 – MyKuLLSKI 2012-01-11 04:29:26

+0

製表符來自TextBox數據源。我將Textbox的Text屬性綁定到一個字符串,並且該字符串包含Tab。如果我用四個空格替換'\ t',它將不能很好地工作。正如當我從TextBox剪切或複製文本時,它不會得到真正的'\ t',而是一些空格。 – Tony 2012-01-11 05:08:18

+0

當我從其他編輯器複製一些字符串到文本框,如果字符串包含空格,結果似乎很奇怪。 – Tony 2012-01-11 05:12:38

1

或許選項卡上的按鍵事件,將字符串字面文本框。類似於MyK的建議。

+0

我想避免用空格替換TAB。就好像一個替換它,如果帶Tab的datasouce在保存之後,數據源將被改變。 – Tony 2012-01-11 05:16:02

1

如果你想讓它顯示出來,寫一個轉換器。語法就是圍繞着 - 只需抓住一個例子,將其改名爲'tabstoptexttospacedtextconverter',在app.xaml中添加對本地控件的引用,然後創建它的一個實例併爲其指定一個x:name來使用它。爲您的文本框綁定數據併爲其分配新的轉換器。

這將是麻煩的一點點,因爲你必須確定最終顯示TB的適當的寬度,然後可能使用一個converterparameter,使這項工作。不過長話短說,各執\ T,那麼的foreach(字符串splitSourceText STR)做這樣的事情:

for (int i = 0; i < (str.Length % 8 > 0 ? str.Length % 8 : 8); i++) str+= " "; 

可以限制對\ r \ n個參數或分割分割字符串數組上的字符第一。