2011-10-10 7 views
3

非常に正確な幅(ピクセル単位)のWPFで1行のテキストボックスを作成しようとしていますが、スクロールまたはオーバーフローのテキストはありません。幅は、単位(96 /インチ)ではなく、ピクセル単位で設定する必要があります。現在のテキストがテキストボックス全体を満たしている場合、ユーザーがテキストボックスに追加の文字を追加できないようにします。オーバーフローテキストなしでピクセル単位で幅を設定してテキストボックスを作成するにはどうすればよいですか?

上記のような動作をさせるためにどのようなプロパティを設定する必要がありますか?

+0

私はWPFに慣れていないんだけど、もしあなたはフォントの種類とサイズを事前に知っていますが、maxlength属性を活用できますか? –

+0

WPFはピクセルでは機能しません。デバイスに依存しないユニットで作業する必要があります。これを参照してくださいhttp://stackoverflow.com/questions/1918877/how-can-i-get-the-dpi-in-wpf –

答えて

1

あなたは、この(それはあなたのテキストボックスに3にテキストの長さが制限されます)のようなあなたのテキストボックスのMaxLengthプロパティを設定することができます - あなたも、あなた自身のViewModelのプロパティでこのプロパティをバインドでき

<TextBox MaxLength="3"/> 

。あなたはあなたがあなたのテキストボックスの実際の幅にバインドすることができます値をハードコーディングしたくない場合は、あなたのテキストボックスの幅にバインドしたい場合 -

<TextBox MaxLength="{Binding ActualWidth, RelativeSource={RelativeSource Mode=Self}}"/> 
+0

しかし、実際の幅はピクセル単位であるため、何らかの種類のコンバータを作成する必要がありますDPIとコントロールの幅に基づいた計算は、コントロールの正しい最大長を返します。 –

+0

そうでなければ、あなたのViewModelに定数フィールドを持つことができます。単純にそのプロパティにバインドします。 –

+0

正確なピクセル数になるように見えるのは、WPFがどのように動作したいかとは逆です。私は次の最良の選択肢、すなわち文字カウントの制限のために行くつもりです。 – ford

関連する問題