2012-03-20 17 views
15

xamlのTextBlockにユーザーが入力できる文字数を設定するにはどうすればよいですか?XAMLのTextBlockの最大chr長を設定する

私はモデルでそれを行うか、それを処理するためのカスタム属性を作成しますか?

答えて

9

TextBlockにはMaxLengthはありません.Labelもありません。 TextBoxは行います。 TextBlockを変更しない限り、ユーザーはTextBlockに入力できません。

本当にTextBlockを制限したいのですか、それともTextBoxですか? TextBoxの場合は、単にMaxLengthプロパティを使用できます。

<TextBox Name="textBox1" MaxLength="5" /> 

それは本当にあなたが使用し、何とかそれに入力されたデータにユーザーを許可しているのTextBlockの場合は、テキストボックスを使用するようにスイッチ。それが後にあるTextBlockスタイルの場合、TextBoxをTextBlockのようにスタイルすることができます。

+0

のMaxLengthを設定することにより、

<TextBlock TextTrimming="CharacterEllipsis" Text="{Binding LongText}" 

または使用のTextBox のようなのTextBlockでオーバーフローをトリムが機能していません。ユーザーは5より多くの文字を入力できます。 – user1624552

+0

TextBlockではなく、Styled TextBoxを使用していますか? – Rhyous

7

カスタムコントロールを作成せずに、いくつかのオプションがあります。

TextBlockは、予想されるテキストに正確に合うようにサイズ調整しようとする可能性がありますが、さまざまな入力や異なるフォントサイズを考慮していないとすばやく醜いです。

代わりに、TextBlock.Textプロパティに割り当てる文字列の文字長を確認し、必要に応じて制限することができます。

string s = "new text"; 
if (s.Length > maxLen) 
    textBlock1.Text = s.Substring(0, maxLen); 
else 
    textBlock1.Text = s; 

別のオプションは、TextWrappingTextTrimmingプロパティを使用することです。行の折り返しを追加するには、TextBlock xamlに次の属性を追加し、TextBlockのサイズを超えるテキストが存在することを示す「...」を追加することができます。

<TextBlock ... TextWrapping="Wrap" TextTrimming="CharacterEllipsis" /> 
2

Textblockの 'TextTrimming'プロパティを使用できます。 TextTrimming = "CharacterEllipsis"を設定します。実際に表示する文字数を管理するには、を使用する必要があります。

<TextBlock TextTrimming="CharacterEllipsis" Text="{Binding Subject}"/> 
0

のどちらかに設定MaxHeightの= "SomeHeight" と

<TextBox IsReadOnly="True" Background="Transparent" BorderThickness="0" 
MaxLength="100" 
関連する問題