WPF の BitmapImage で表示した画像ファイルが削除・上書きできなくなる問題の解決方法
BitmapImage で表示した画像ファイルがロックされ、削除・上書きできなくなる。原因である既定のキャッシュ動作と、BitmapCacheOption.OnLoad・StreamSource による解決方法を整理する。
WPF・XAML に関する記事の一覧です。 データバインディング、コントロール、スタイル、仮想化、UI の挙動を扱います。 いずれも Windows デスクトップアプリケーションの開発中に遭遇した具体的な問題を出発点に、 その挙動が起きる理由を説明したうえで、実装とトレードオフまで整理しています。
BitmapImage で表示した画像ファイルがロックされ、削除・上書きできなくなる。原因である既定のキャッシュ動作と、BitmapCacheOption.OnLoad・StreamSource による解決方法を整理する。
自作 RelayCommand の CanExecute を変えてもボタンが更新されないのは CanExecuteChanged が発火されないため。CommandManager.RequerySuggested への委譲と手動発火の使い分けを整理する。
GetBindingExpression().UpdateSource() を View から呼ぶ際に起きる null・一括更新・方向取り違え・MVVM 設計の落とし穴を、一次情報を基に整理する。
TextBox.Text の既定が LostFocus であるために起きる「入力が ViewModel に届かない」問題を、UpdateSourceTrigger の三値の使い分けと落とし穴から整理する。
バインド中の ObservableCollection を別スレッドから変更すると NotSupportedException が発生する。原因のスレッドアフィニティと、EnableCollectionSynchronization・Dispatcher による解決策を整理する。
Fluent テーマの TextBox がフォーカス時に表示するクリアボタンを、入力挙動を変えずに非表示化する。名前付きパーツを操作する方法と AcceptsReturn を使う方法を .NET 10・9 対応で整理する。
StackPanel の中に置いた ScrollViewer がスクロールしないのは、StackPanel が高さを制約しないためである。原因と、Grid や DockPanel を使った解決方法・選択基準を解説する。
コンバーターを書かずに Binding.StringFormat で数値・通貨・日付を書式化する手法を整理し、カルチャ依存や ContentControl での制約までまとめる。
WPF の Binding が動かないとき、Visual Studio の出力ウィンドウにはバインディングエラーが記録される。エラーメッセージの構造の読み方、トレースの詳細化、パターン別の対処を整理する。
WPF DataGrid のソート状態を初期化する代表的な方法を整理し、単一列ソートと複数列ソートの両方で使える実装例を示す。
StaticResource はXAMLロード時に値を確定するため、実行時の変更は反映されない。動的な変更が必要な場合は DynamicResource を使用する。両者の仕組みと使い分けの判断基準を解説する。
WPF で Label を大量配置した際に描画が遅くなる原因を整理し、TextBlock との違い、使い分け、置き換え時の注意点を実装例付きでまとめる。
WPF の Label にアンダーバー(_)を含む文字列を表示しようとすると、画面上で消えてしまうことがあります。この原因と 3 つの回避方法を解説します。
DataGridTemplateColumn の CellTemplate と CellEditingTemplate を使い分け、表示時と編集中で最適な UI を構成する方法を解説します。
TreePaste で発生したタスクトレイから表示した ContextMenu が閉じない問題に対し、StaysOpen=False と SetForegroundWindow の併用で解消する方法を整理します。
WPF 標準機能だけで Fluent デザインの見た目を整え、SystemColors を使って Windows の色設定に追従する実装方法を整理します。
WPFでTextBlockの代わりにTextBoxを使い、編集不可のままテキストを選択・コピー可能に表示する方法を解説します。
ItemsSource に渡すデータ構造によって、DisplayMemberPath・SelectedItem・SelectedValue の設定方法が変わります。文字列リスト、オブジェクトリスト、Enum の各パターンを整理します。
ListBox の仮想化有効時に選択状態が維持されない理由と、IsSelected を各アイテムに持たせて MVVM で安定させる解決方法を解説する。Shift 範囲選択への対応も含める。
DataGrid のソート処理の基本と、実務で使いやすい実装パターンを解説する。
XAML とコードビハインドの両面から、WPF DatePicker の日付表示形式を変更する方法をまとめる。