locked
DataGrid に大量に TextBox, TextBlock を配置し、Visibility, Height を設定すると、レイアウトが微妙に狂う RRS feed

  • 質問

  • DataGridのDataGridTemplateColumnにTextBlockとTextBoxをそれぞれ60個ずつStackPanel に入れて保持しています。

    TextBlock や TextBox の値が空文字またはnullならば、Visibility=Collapsed, Height=0 にしています。

    ここまでは前置きです。

    レイアウトのおかしい行をいったんスクロールアウトし、画面がから見えなくしてから、再度スクロールインして画面を見ると、ちゃんとレイアウトされているのです

    行をスクロールインスクロールアウトすると、何かが発生しているものと思われますが、その実体が何であるかわからないとコーディングの使用がありません。

    どなたか識者の方のご意見をお待ちしております。



    2011年6月24日 16:16

回答

すべての返信

  • その実体はこちらからソースがダウンロードできます。

    http://silverlight.codeplex.com/
    DataGridはRiaClient.Sdk.slnの中ですね。

    # チラ見したかぎりでは描画領域を計算している部分もあるみたいですが。


    2011年6月25日 4:23
  • ご回答ありがとうございます。

    さっそくソースコードをダウンロードして眺めていますが、あまりにも巨大すぎて

    どこで何をやっているか見当もつきませんでした。

     

    2011年6月26日 4:41
  • 解決済みになっている上に私の推測ですが、①空文字判定、Visibility=Collapsed, Height=0の設定のタイミング、②ItemsSourceの設定、が噛み合っていないように思えます。

    画面がレイアウトされてから、ItemsSourceに値を入れているのではないでしょうか。その場合、Visibility=Collapsedになってから、Textプロパティに値が入れられることになります。また、スクロールする時点ではItemsSourceにもう値が入っているので、Textプロパティに値が入っており、Visibility=Visibleと判定されると思います。

    ソースコードレベルで見られれば、アドバイスできると思うのですが・・・(問題が解決していたらスルーしてください)。

     

    2011年7月11日 6:07