OnRender
メソッドをオーバーライドするカスタムTextBoxがあります。残念ながら、グリッドに143-145個以上のテキストボックスを追加すると、OnRender
が正しく動作しません。OnRenderメソッドは144個以上のコントロールでは機能しません
これは、wpfデザイナーのような160個のテキストボックスを持つウィンドウです。各TextBoxは、OnRender
メソッドでボーダーブラシを赤に設定します。テキストボックスの最後の列については、OnRender
はもう動作しません。
render test example http://s3.postimage.org/id6jvq09n/render_Test_Example.png
問題は、同じことが、実行時に起こる、WPFデザイナにバインドされていません。面白いことに、デザイナー内のあるコンポーネントを削除したり、レンダリングされたら実行時に削除したりすると、他のすべてのコントロールが突然動作します。
コード例:
MytextBox.cs
RenderTestPanel.xaml
RenderTestPanel.xaml.cs
本当に多くのテキストボックスを表示する必要はありますか? TextBlocksを使用してみて、ユーザーがセルを編集することを選択した場合にのみTextBoxを表示してください。 TextBlocksははるかに軽量です。 –
Chibacityのコメントに加えて、スタイルを使って 'BorderBrush'を赤色に設定してみませんか?また、何回も呼び出される「OnRender」の代わりに、コンストラクタでブラシを赤に設定します。 – Rachel
@chibacityはい、多くのテキストボックスを表示する必要があります。古いシステムのマップをc#パネルに変換しています。これらの古いマップには、たとえば10x15の修正可能なテキストフィールドのグリッドが含まれています。彼らはテキストフィールドで作られたテーブルのようです。 – Markus