2012-01-11 67 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个参数或分割分割字符串数组上的字符第一。