it技術:dotnet:wpf開発
差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
| it技術:dotnet:wpf開発 [2017/11/17 17:12] – [Buttonのクリックイベントを発生させる] yajuadmin | it技術:dotnet:wpf開発 [2018/01/17 18:19] (現在) – [Shownイベント] yajuadmin | ||
|---|---|---|---|
| 行 86: | 行 86: | ||
| [[http:// | [[http:// | ||
| - | UIスレッドで動作させために、Application.Current.Dispatcher.Invoke((Action)delegate内で画面表示処理を呼び出す。 | + | UIスレッドで動作させために、下記内で画面表示処理を呼び出す。 |
| <code csharp> | <code csharp> | ||
| + | Application.Current.Dispatcher.Invoke((Action)delegate | ||
| + | </ | ||
| + | |||
| + | <code csharp sample> | ||
| private void watcher_Changed(Object source, FileSystemEventArgs e) | private void watcher_Changed(Object source, FileSystemEventArgs e) | ||
| { | { | ||
| 行 102: | 行 106: | ||
| </ | </ | ||
| + | ==== 画面表示時の例外エラー ==== | ||
| + | 例外エラー「' | ||
| + | |||
| + | フォームインスタンスを再利用するとでる。 | ||
| + | * 他のフォームをnewする | ||
| + | * ShowModalで開く | ||
| + | * そのフォームを閉じる | ||
| + | * new済みなので、再度ShowModalで開く | ||
| + | |||
| + | 対応方法 | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | |||
| + | |||
| + | <code csharp> | ||
| + | private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) | ||
| + | { | ||
| + | e.Cancel = true; | ||
| + | this.Visibility = Visibility.Hidden; | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ==== Shownイベント ==== | ||
| + | WPFにはWindowが最初に表示されたときのShownイベントが無いので、代わりにContentRenderedイベントを利用する。\\ | ||
| + | [[https:// | ||
| ==== 表示文字幅の取得 ==== | ==== 表示文字幅の取得 ==== | ||
| 画面に表示される文字の幅を取得する。\\ | 画面に表示される文字の幅を取得する。\\ | ||
| 行 139: | 行 168: | ||
| </ | </ | ||
| [[http:// | [[http:// | ||
| + | |||
| + | ==== Bindingのソースが更新されない ==== | ||
| + | ViewModelにINotifyPropertyChangedインターフェイスを実装する必要がある。\\ | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | |||
| + | INotifyPropertyChangedを実装はイケてないので、ReactivePropertyを使用する。\\ | ||
| + | NuGetから「ReactiveProperty 3.6.0」で入手する。 | ||
| + | |||
| + | * [[https:// | ||
| + | * [[http:// | ||
| + | |||
| + | ==== ListViewの選択背景色を変更する ==== | ||
| + | === XAMLでの変更方法 === | ||
| + | [[https:// | ||
| + | |||
| + | <code xml> | ||
| + | < | ||
| + | <Style TargetType=" | ||
| + | < | ||
| + | <Trigger Property=" | ||
| + | <Setter Property=" | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | === コードによる変更方法 === | ||
| + | [[https:// | ||
| + | |||
| + | <code csharp> | ||
| + | // 選択時の背景色 | ||
| + | Style styleListViewItem = new Style(typeof(ListViewItem)); | ||
| + | Trigger triggerIsMouseOver = new Trigger { Property = ListViewItem.IsMouseOverProperty, | ||
| + | triggerIsMouseOver.Setters.Add(new Setter(ListViewItem.BackgroundProperty, | ||
| + | styleListViewItem.Triggers.Add(triggerIsMouseOver); | ||
| + | lstRework.ItemContainerStyle = styleListViewItem; | ||
| + | </ | ||
| ==== メモ ==== | ==== メモ ==== | ||
| * [[https:// | * [[https:// | ||
| 行 149: | 行 218: | ||
| * [[http:// | * [[http:// | ||
| * [[http:// | * [[http:// | ||
| + | * [[http:// | ||
it技術/dotnet/wpf開発.1510906358.txt.gz · 最終更新: 2017/11/17 17:12 by yajuadmin
