下記記事で作成したGUIアプリの機能を拡張してみようと思います。
この記事では、既存の WPF×PowerShell 製 GUI に タスク JSON を読み込み、DataGrid に表示&絞り込み(期間/キーワード) できる機能を追加する手順をまとめます。
実装モジュールは modules/TaskData.psm1、呼び出しは Main.ps1、UI は XAML の DataGrid+フィルタバーで構成します。
TASK_DATA)を読み込み、ObservableCollection として DataGrid にバインドPresentationCore/PresentationFramework/WindowsBase)Load-Xaml, Bind-DataContext, Register-HyperlinkHandler, New-UiTimer などDateTime に変換ConvertFrom-Json
ICollectionViewを必ず介してフィルタ(CollectionViewSource.GetDefaultView)
'TaskData.psm1'を追加する。
TaskData.psm1でExport-ModuleMemberで設定した関数を追加する。
taskviewのUIを作成する。ここでは、新しいタブを作成して描画するようにしている。
Initialize-TaskView
Filter が効かない。必ず Ensure-TasksCollectionView を通す。DateTime で:文字列比較(-gt/-lt)は NG。$dt.Date -eq $now.Date のように厳密に。Update-TaskView 内は Ensure-TasksCollectionView を呼ぶ(本記事のコードは修正済み)。Hyperlink.RequestNavigate をハンドラで拾い Process.Start などを呼ぶ。status に応じて RowStyle を切り替え)ICollectionView の SortDescriptions を保存/復元)FileSystemWatcher)