Commandの実装を変える必要が出た。

MVVMに必須なCommandクラスを作る。で、CanExecuteChangedイベント系のところを以下のように実装した。

/// <summary>実行可否変更イベント</summary>
public event System.EventHandler CanExecuteChanged {
add {CommandManager.RequerySuggested += value;}
remove {CommandManager.RequerySuggested -= value;}
}

/// <summary>
/// コマンドの実行可否状態が変更された事を知らせるイベントを発生させます。
/// </summary>
public void RaiseCanExecuteChanged() {
CommandManager.InvalidateRequerySuggested();
return;
}
この実装、WPF4.5では上手く動作しない現象が発生した。WPF4.5とWPF4で、コマンド系のCanExecute周辺の実装が変更されたらしい。
WPF: ICommand CanExecuteChanged behaviour change in .NET 4.5
どうも、CanExecuteChangedイベントが発生した時、ハンドラ側に渡す第1引数(sender)が、ICommand以外だったり、nullだったりすると、更新してくれなくなったらしい。
そして、上記実装がそれに当たる感じ。ただ、動作したりしなかったりするんだよな。要するに、.NET4.5上では、動作が不安定になってしまった。
↓調査、参考サイト
WPF – コマンドのCanExecute強制自動再評価について
CommandManager Class
↑から引用。

Provides command related utility methods that register CommandBinding and InputBinding objects for class owners and commands, add and remove command event handlers, and provides services for querying the status of a command.

説明分によれば、CommandBindingやInputBindingのためのクラスであり、ICommand実装のCommandの為とは書いていない。WPF4.5上で動作を考えるなら、上の実装を修正する必要がありそうだ…。
安易な実装の方に飛びつくべきではなかったなOrz。
スポンサーサイト
当サイトは基本をすっ飛ばしてます。基本文法等は、@ITをどうぞ
カテゴリー: WPF4.5 | コメント: 0 | トラックバック: 0

仕事で今すぐは使えないので

VS2012、C#5.0、WPF4.5がリリースされた!と言って、はいそうですかとバージョンアップができないのが仕事。
そもそもユーザの環境にランタイム入れてもらわないといけないし。
C#4で困っているところなんて、特にないし。
ユーザのPC環境が、Windows8がメインになる頃を見据えておくしかできない。

WPF4.5の新機能
↑の英語版
What's New in WPF Version 4.5 RC
グルーピング使用時のパフォーマンス改善はいいなぁ。どこまで改善されているかが気になるところ。

.NET 4.5 Readme
Windows8には、.NET4.5のLanguage Packは入らないようだ…。代わりに、Windows8のLanguagePackを入れろと書いてある。

.NET 4.5 基本クラス ライブラリの新機能
非同期系のasync, awaitってのを使ってみたいな。バグなく使うのは難しいかもしれないけど。

アプリケーションの.NET Framework 4.5への移行: 廃止された型と新しい型

ついでのWCF
WCF 4.5 新機能

↑の英語版
What's New in Windows Communication Foundation 4.5
WCF通信で、バイナリ圧縮ができるようになったのか。前はIIS7の圧縮機能に頼るだけだったので、これ要望多かったのかも。WCFって、XMLかJSONなんだけど、プロパティ名やら名前空間やらでやたらサイズを食っている。メガ後半やギガクラスのネット環境であれば、特に問題ないけど、海外とかと通信しようと思うと、距離的な事や、そのお国の事情で、そうは行かないときがある。そういう時にはいいかもしれない。

もうそろそろ的なWindows8。なんちゃらストアに登録されるには、色々な要件があるようで。
Windows 8 アプリの認定の要件
Apple Storeの二番煎じ感満載だろうと、判定がNGではストアに登録してくれないよという事か。

パフォーマンス云々は、どんなにバージョンアップしても変わらない。
WPF アプリケーションのパフォーマンスの最適化

その他。
.NET Framework Blog
.NET Framework 4.5
C#5の新機能
当サイトは基本をすっ飛ばしてます。基本文法等は、@ITをどうぞ
カテゴリー: WPF4.5 | コメント: 0 | トラックバック: 0

サイドバー背後固定表示サンプル

当ブログに書かれたソースコードは流用自由です。

バグ、スペルミス等はありうる事です。

ご利用の際は自己責任でお願いしますm(_ _)m