mikeo_410


 コントールの基本的なこと

  1. UIElement
    Windowsのメッセージを受け取る構成パーツをコントロールと呼んできたが、どうも不適切なようだ。共通の親クラスは、Controlではなく、UIElementが適切なようだ。Borderの親にControlがないことに気が付いた。
  2. コントロールが表示されているか (描画されているか)
    ListBoxの表示範囲より外にある(スクロールして表示される)行は、下記の位置取得などに失敗する。PresentationSourceに接続されていないと言うエラーになる。表示範囲外のコントロールは、
    control.IsVisible
    が、false になる。
    ただし、このフラグは一度表示すると、trueになり、表示エリアから出てもfalseにはならない。
  3. コントロールが表示されているか (見えているか)
    座標を調べる以外の方法は、今のところ分からない。
  4. コントロールが表示されているか (スクロール範囲内か)
    これは、control.IsVisible と、座標を調べる。
  5. コントロールの位置
    Point point = control.PointToScreen(new Point());
  6. UpdateLayout()
    ListBoxで選択行を中央に表示したいと考えた。ListBoxのScrollIntoView()で、表示はできるが中央にはこない。そこで、ScrollIntoView()で移動した位置からさらにLineUp()、LineDown()で調整する。このとき、ScrollIntoView()の実行後の位置が欲しいが、非同期なので直後では取得できない。UpdateLayout()を呼ぶことで、値が取得できるようになる。
  7. OwnedWindows
    System.Windows の Window.OwnedWindows は、たくさん子ウインドウを開くアプリケーションで有用。

横浜 マンション 美容外科 札幌 相続税 計算 東戸塚 マンション ホームページ作成