WPF

[WPF] ObserbleCollection で編集(更新)を変更通知で反映したい

リスト(コレクション)データをバインドして変更通知したい WPF でリスト(コレクション)データをバインドして、変更通知を行う方法をまとめます。特にバインドされたデータの値を書き換える場合や、バインドされたデータのソートは、単純に ObservableCollection を使用するだけではうまくいきません。 この記事では例として以下のような操作について実装方法をまとめます。 データの追加 データ […]

[WPF] Binding を強制的に更新反映する [C#]

WPF バインドしている値を強制的に反映したい WPF ではビューに値をバインドできます。 バインドしている値の変更通知を行うとビューにその値が反映されますし、ビューの入力値が更新されれば何かしらのタイミングでバインドしている値が更新されます。 ただ場合によっては任意のタイミングで明示的に、強制的にコード上からバインドを更新したい場合があります。そのような場合にはバインド評価更新用のメソッドを実行 […]

[WPF] プログレスバーの使い方まとめ

WPF でプログレスバーを使う アプリ内で時間のかかる処理を行う場合、プログレスバーを画面に表示することでユーザーはその進捗を直感的、視覚的に把握できるようになります。 何の表示もないまま時間のかかる処理を実行すると、画面が固まっているように見えてユーザーを不安にさせてしまいます。したがって重たい処理を行う時はプログレスバーなどで進捗を示してあげましょう。 WPFには標準のコントロールとして、Pr […]

[WPF] Visiblity に bool値をバインドする方法(BooleanToVisibilityConverter)

コントロールの表示非表示を切り替える Visibility 要素の表示状態を指定するプロパティ Visibility は Enum です。そのため、単純にbool値をバインドして要素の表示を切り替えることはできません。 しかし表示非表示を切り替えるためにbool値で制御したい場面は多々あります。 基本的には異なる型でバインドするには Converter を作成するのが作法です。ほとんどの場合自作す […]

[WPF] 初期フォーカスをXAML上で設定する方法

WPFで初期フォーカスを設定したい WPFの画面を作成しているときに、初期フォーカスを特定のコントロールに設定したいことがありました。その方法を調べたのでメモします。 focus() Window の Loaded イベントでフォーカスしたいコントロールの focus() を呼ぶ方法があります。 private void Window_Loaded(object sender, RoutedEve […]

[WPF] Windowを閉じずに隠しておくための実装

WPF の画面表示が遅いので何とかしたい WPFではリッチな画面を作れる反面、画面にコントロールが多い場合はそれなりのコストがかかってしまいます。 頻繁に画面を閉じたり開いたりする場合、開きっぱなしにしたほうが操作の体感速度が改善する場合があります。 ということでその方法をまとめます。 SubWindow を一度開いたら閉じずに隠したままにします。 再利用する画面をシングルトンにして、閉じずに隠す […]

[WPF, xaml] 要素のサイズに合わせてWindowの大きさを自動的にリサイズ調整する方法

WPFでCSSみたいに勝手にサイズを調整てほしい WPFでとあるアプリケーションを開発しているときに、動的にコンテンツを生成する場面がありました。これ自体は問題ないのですが、画面(Window)のサイズ(Width, Heigh)も含まれる要素・コンテンツのサイズに応じて動的にリサイズしたかったのでその方法を調べました。 以下その方法をメモします。 SizeToContent プロパティ Wind […]

C#

[WPF] アプリを全画面表示する方法

WPFで全画面(フルスクリーン)表示する方法 WPFで作ったアプリケーションを全画面表示するための方法をメモしておきます。 WPFでは、直接に全画面表示の設定ができるわけではありません。Windowクラスに複数のプロパティを設定することで全画面に表示することができます。 プロパティ 値 意味 WindowStyle None タイトルバーと境界線を表示しない WindowState Maximiz […]

[WPF] コンボボックスにMaxLengthを設定する方法

[WPF] コンボボックスにMaxLengthを設定する方法 WPFアプリケーションで入力可能なコンボボックスの入力桁数を制限したい場合がありました。テキストボックスの場合は、MaxLengthプロパティを設定するだけですが、コンボボックスにはそれがありません。なので別の方法をとる必要があります。 添付ビヘイビアを使用してMaxLengthを設定する方法があります。ComboBox のテンプレート […]