Tag: WPF/GUI

目次

イベント

Window Closingイベントを追加する

  • xamlのデザイン画面のWindowタグで"Closing"タグを追加。すると自動的に"Window_Closing"ハンドラが作られる。

ウィンドウサイズ・位置

Windowのサイズを中身のコントロールのサイズから決定する。

SizeToContent="WidthAndHeight"を使う。

Splitterを使う

  • XAMLとSplitter
  • GridSplitterでStrechを指定しないとXAMLデザイナ上ではsplitterがあるようにみえても操作できなくなってしまうので注意。

メッセージボックス

リストボックス

リストボックスをインクリメンタルにフィルタリング

Master/Detail

詳細ページを切り替える

ダイアログ

コモンダイアログ

アバウトダイアログを作る

バージョン情報などを表示するダイアログのひな形は用意されていないので自分でがんばってつくるしかないらしい。以下のリンクが参考になる。

バージョン情報そのものの取得方法

アイコンの取得方法

その他

IsSynchronizedWithCurrentItemとは何か

参考情報

一応わかったこと

  • ListBoxやComboBoxではIsSynchronizedWithCurrentItemが設定できる。
  • 本来同じデータソース(ItemsSource)にバインドしたコントロール間で同じものを同時に選択状態にするために使用するものらしい(MSDNのリファレンスによる)。
  • しかし、IsSynchronizedWithCurrentItem=trueの状態では、SelectedItemが選択された項目と常に同期するが、他の状態では、フォーカスが外れたタイミングじゃないと同期しないとかいろいろ挙動の違いがあるらしい。
  • SelectedItemが変わらない=CurrentChangingイベントが発行されないなど関連する挙動もいろいろ変わるので注意が必要と思われる。
  • DataGridの行編集用にComboBoxをのせたり、TabControlの上にComboBoxをのせたりする場合、そのComboBoxのItemsSourceが共通になる場合、IsSynchronizedWithCurrentItem=Trueだとまずいことになりそう。
  • TabControlの上にComboBoxをのせそのIsSynchronizedWithCurrentItemをうっかりTrueにしていたとき、SelectedValueにSelectedValuePathが考慮されない、ItemsSourceのここのオブジェクトのToString()されたものがセットされる現象が発生した。原因不明すぎる。

デフォルトのコントロールテンプレートの値を表示する

アプリケーションのアイコンを変更する

  • icoファイルはIcoFX等で作成する。
  • プロジェクトのプロパティ→アプリケーション→アイコンとマニフェストでアイコンファイルを指定する。ここで指定したファイルはエクスプローラーでexeファイルに表示されるアイコンになる。
  • <Window Icon="...>で指定する。ここで登録するとウィンドウの左上のアイコンとタスクバーに表示される。

WPFでアイコンを指定する方法 - たこにありがちなこと。

Windowメッセージを処理する

なぜOnDataContextChanged…メソッドがないか

トラブルシューティング

TextBoxの幅が高くなる

  • 例えばGridの行にTextBoxとButtonを並べ、Buttonにマージンを設定すると、TextBoxの高さがそれに釣られて高くなってしまう。TextBoxのほうにも同じ量のマージンを設定するしかないかも。

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-12-20 (水) 19:17:52