イントレ
  • 新規
  • ペイント
  • 一覧
  • 管理
  • Home
  • ダウンロード
  • 日記
  • イラスト
  • リンク
  • About
  •  RSS

本文へジャンプ


イントレ。

Tag for "WPF"

«Prev || 1 · 2 · 3 · 4 · 5 · 6 · 7 · | Next»

WPF4は便利になりそうだ。

WPF 4 (VS 2010 and .NET 4.0 Series)

ScottGu's Blogより。
MSDNライブラリよりも詳細に書かれている気がする。
WPF RibbonはCTP扱いでcodeplexにて公開されたみたい。

コントロール群の説明に書かれてたWPF Bag O'Tricksって初めて聞いたけど、なかなか興味のそそるコントロール群が揃ってます。
コントロールじゃないけど、NotifyWorkerとか便利そう。
Bag-o-Tricks March '08 Edition

なんか追いかけるのだけで疲れる・・・。

Win7ほっといてVS2010。

Visual Studio 2010 and .NET Framework 4 Beta 2

上記リンクからVisualStudio2010 Beta2の英語版がダウンロード出来るようです。
Expressも含めた全エディションが用意されてますね。


今回はエディションがExpress/Professional/Premium/Ultimateの4つになるみたいです。
StandardがProfessionalに吸収された形かな?
ぶっちゃけ、C#にメインならExpressで困ることはほとんど無いわけですが。
ちなみに、RTMが来年3月22日だそうです。

・・・と書いてある間にインストールが始まってました。
.NET Framework 4のインストールのために再起動要求されるのはBeta1と変わらずですね。

で。
早速起動してみてるんですが、Beta1と比べると立ち上がりは全然早いですね。
WPFのデザイナが立ち上がるのはいつも通り時間がかかってる感じですが・・・
動作自体はキビキビしていて悪くないです。
パフォーマンスチームぐっじょぶ!

今回のベータ版も日本語版が計画されてるということなので、一ヶ月ぐらいしたらリリースされるのかな?

Grid.IsSharedSizeScopeという機能。

WPFのGridのイチ機能で、複数のColumnDefinition/RowDefinition間でサイズを共有出来る。

具体的には同じ名前(SharedSizeGroup)のついたxxxDefinition間で一番サイズが大きいものに揃うみたい。
このとき、Column/Rowのサイズはauto固定で特定のサイズStar(*)は使えない。
また、使うには複数のGridの上の階層(親以上の要素)にGrid.IsSharedSizeScope=Trueを設定する必要がある。



	
		
			
			
		
		


↓実行結果
20091009-shared_size_grid.png
複数のGridとというか複数のColumnDefinitionでのサイズ共有。
長い方にサイズが合わせられてます。
こういうのはダイアログのOKキャンセルボタンの配置に良いかも?

Gridとか基本中の基本と思って使ってたけど、まだまだ知らないことあるなぁ・・・。

WPFのTreeViewをゴニョゴニョ。

WPFのツリービューに欲しい機能がいくつか。

・オーバーフローツールチップ
- アイテムのラベルが表示領域をはみ出している場合に、
マウスをポイントしたら非表示部分も含めてツールチップで表示するやつ。
・FullRow Selection
- アイテムを選択したときの枠が左右めいっぱいに広がってるやつ。

・・・を実現すべく四苦八苦してみたのですが、そろそろ挫折しそうなのでメモ書きでも残す次第w


まずは、オーバーフローツールチップ。
TreeViewItemのツールチップ関連機能をそのまま流用して、表示位置を変えるだけという手抜きをしますw
 

注意点:
 ・ToolTipService.Placementで基準点をRelative(=TreeViewItem)にしておく。
 ・ToolTipService.ToolTipはバインディングでTreeViewItem.Headerと同期させる。
 ・表示位置の微調整をToolTipService.HorizontalOffsetやToolTipService.VerticalOffsetで行う。
 ・TreeViewItemの表示がオーバーフローしてるかチェックしてない(=マウスオーバーで常に表示される)。
 ・汎用的に使うならフォントの同期とか考慮しないとマズいかも。


続いてFullRowSelectなんですが、ControlTemplateでゴニョゴニョするしかないようです。
ネットで拾ったXAMLをベースに少し改造したのですが不完全です。
子要素のマージンの取り方が原因で完全に左端まで選択枠が伸びません・・・。
(+先ほどのツールチップのコードも入ってますw)

							
						
					
					
						
					
					
						
					
				
				
					
						
					
					
						
					
					
						
						
						
					
					
						
							
							
						
						
						
						
					
					
						
					
				
			
		
	


ちょっとわかりにくいのですが、最初にGridで領域を2x2に分けています。
+=+=====+
| A | B | A: サブツリー表示・非表示のToggleButton
+=+=====+ B: Header表示用のContentPresenter
| C | D | C-D: サブツリー表示用のItemsPresenter
+=+=====+

元々のソースではDの領域にItemsPresenterを配置していました。
自分はその領域を縮めたかったのでC-D間にBorderを配置してPaddingで調整しています。
・・・ここで上手いことやると完全なFullRowSelectionが実現できるんでしょうけど、考えが思いつきません。

このような配置の後にトリガーを使って背景を変更してます。
AとBがそれぞれ別背景になっているので、ここも構造を変更しないとグラデーションな枠とか使えませんね。

この辺でギブアップ。orz

データに知能を持たせる。

スマートなアプリケーションアーキテクチャの構築(1)

プロパティの代わりにフィールドを内包したクラスを用意して、
データの検証などのロジックをデータに持たせるとスマートという触れ込み。

この記事を見つけたのは数ヶ月前で、見つけたときは感心はしたものの使いどころがわからず、
頭の中に入れておくか…程度で済ませてしまった。
今は後悔している。

↑を基点にいろいろ弄ってMVVMに適用したのが↓。

[WPF][C#]データに知能を持たせる

readonlyフィールドで保持していたインスタンスを自動プロパティにすることでWPFとのバインディングに対応。
検証ロジックやModel←→ViewModel間のデータ変換をデリゲートで分離。

これだけでも十二分にViewModelの実装が楽になります。
コンストラクタで初期化する部分が多少複雑になるデメリットはありますが…。

しかし。
IEditableObjectを実装し、ViewModel基底クラスにプロパティ初期化ロジックを組み込むことで、
ViewModel単位でBeginEdit/EndEdit/CancelEditの透過的なサポートを実現しています。

要はMVVMの作り方+プロパティをちょっと弄るだけで、
検証ロジックとデータのロールバック動作がサポート出来るようになるということ。

正直、MVVM Tookitに取り込まれてもおかしくないぐらい凄いと思う。
そして、その可能性に気づけなかった自分の応用力のなさに愕然…。

もっと精進しなきゃ。
«Prev || 1 · 2 · 3 · 4 · 5 · 6 · 7 · | Next»

HTML creation time [0.46sec.]
"intre." by MinagiSyu, sense 1999.11.23.
Powered by Nucleus CMS v3.41

Utilities

タグ
園芸 | ツール | SAPFx | Windows 7 | ツクールもどき | .NET | SAP1x | C# | PCパーツ | サッカー | ...すべてのタグ
カレンダー
<   2010-03   >
日月火水木金土
 123456
78910111213
14151617181920
21222324252627
28293031   
最近の更新
    2010-03-10
  • [日記] 結膜炎!!
  • [日記] TortoiseHg 1.0
  • 2010-03-05
  • [日記] サマーウォーズ
  • 2010-03-01
  • [日記] .NET4→.NET3.5のコード互換性とか。
  • 2010-02-21
  • [日記] SubversionからMercurialへ。
  • 2010-02-16
  • [日記] 第4回MMD杯
  • 2010-02-11
  • [日記] VS2010RC一般公開。
Adsense