たぷつきません

おなかがでてきた。もうたぷついてるやん。

WPF

WindowのアイコンをBitmapImageから設定する方法

WPF

WPFで、動的な画像をMemoryStreamに展開済みのBitmapImageからWindowのアイコンに設定する必要があったのだが「Iconで指定してください」という例外が出た。調べたところIconBitmapDecoderを使えば良いということがわかった。以下のような感じ。 /// <summary> /// Bi</summary>…

アイコン表示ListView選択カラー解決

WPF

選択時の表示スタイルではなく、単純に色を変えたいだけなので、アイテム選択で使っているシステムカラーを再定義してしまうというやり方でいける。 <ListView.Resources> <Color x:Key="SelectionFillColor">#D8C2B7</Color> <Color x:Key="SelectionTextColor">#887267</Color> </listview.resources>

アイコン表示ListViewつづき

WPF

サンプルのPlainViewを使って実現すると、選択時の色をカスタマイズできない。巷で出てるTipsのように、ListViewItemのControlTemplateを差し替えてしまうと、GridViewRowPresenter に代替される、PlainViewでの何かがわからないので表示できない。うーんど…

エクスプローラのアイコン表示モードの実現

WPF

http://csfun.blog49.fc2.com/blog-entry-90.html 同じことで悩んでいましたが、すばらしきかな。なんとエレガントな拡張方法!やっぱWPFのデザインは秀逸で超スマートだわぁ。惚れる。 追記 あれ、でもよく見るとモデルをViewBase側で規定しちゃってるから…

透過領域のあるBMP

WPF

こことかこことか、ないとか知ったかぶりして質問者を一蹴している輩が多いのにはゲンナリ。BMPは32ビットカラーではRGBの各8ビットの24ビットカラーに加えて8ビットのアルファチャンネルが付けられるってば。GIMP2でも確認できるし。で、.NETのBitmapで普通…

Facebookまただ。

WPF

Videoのアップロードでも同じ用に、Privacy対応しなきゃだった。

ComboBoxは単純な即値なら楽。

WPF

enumもイケるのね。知らなかった。 public Privacy AlbumPrivacy { get; set; } <ComboBox SelectedValue="{Binding AlbumPrivacy}" SelectedValuePath="Content"> <ComboBoxItem>EVERYONE</ComboBoxItem> <ComboBoxItem>FRIENDS_OF_FRIENDS</ComboBoxItem> <ComboBoxItem>ALL_FRIENDS</ComboBoxItem> <ComboBoxItem>SELF</ComboBoxItem> …</combobox>

Facebookのフォトアルバム作成でプライバシー設定ができるようにする。

WPF

これもMicrosoft製のFacebookライブラリの問題で、CreateAlbumにパラメータが用意されていないため。Facebook上でプライバシー設定して作成したアルバムは、GetAlbumsで取得するとvisibleというプロパティに、"everyone", "friends-of-friends", "friends", …

Facebook連携でアルバムが取得できない問題解決。

WPF

よくExtended Permissionsの仕様を見ると、user_photos, user_videosというのがありますが、なんと、Facebook.Schema.Enums.ExtendedPermissionsには定義がありません。なので、Facebook.dllをバイナリそのままで使わずに、ソースコードでプロジェクト参照し…

Facebook連携でアルバムが出ない。

WPF

Facebook Developer Toolkit - Download: Version 3.02で、フォトアルバム一覧の取得が出来ない。フォトもビデオもアップロードできるところまで漕ぎ着けたのに。。。 フォトのアップロードではアルバムIDを指定しないとならないので、アルバムが取れないと…

TabItemのForegroundにスタイルテンプレートが当たらない。

WPF

TextBlockの既定スタイルを作ると、そのForegroundが利いてしまい、TabItemのテンプレート(Expression Blendでスタイルを展開したものをベースにしたもの)で設定した選択時、非選択時にトリガしたForegroundが反映されない。 ぐぐったらありました。 <ContentPresenter.Resources> <Style TargetType="{x:Type TextBlock}"> </contentpresenter.resources>

Dictionaryを含むモデルのデータコレクションをバインド

WPF

そもそもDictionaryがいけるのかな?と調査。IEnumerable> であるから、KeyValuePairオブジェクトが連続すると見て、やってみたら、一発でうまくいった。いい感じ。 Window1.xml.cs public Window1() { InitializeComponent(); this.DataContext = new List<Model>(</model>…

バージョン情報ダイアログの作り方

WPF

最初Googleで検索したらWPFでの作り方の紹介サイトの実装方法がダサかったりするので「WPF+Xamlらしい」やり方を書き残す。どうせまた僕は時間が経つと忘れるから。 AboutBoxWindow.xaml.cs public partial class AboutBoxWindow: Window { public AboutBox…

Popupのアニメーションがfadeでも、Buttonで正しくPopupの開閉を制御する。

WPF

Popupが自動的に閉じられるようにするためには、StaysOpenをFalseにしないとならないが、Popupを開くボタンを用意した際に不都合が生じる。というのも、トップレベルのメニューアイテムのように一度クリックしてPopupを開き、もう一度クリックでPopupを閉じ…

Xamlに色々委譲できるカスタムコントロールの作成

WPF

WPFのカスタムコントロールを作る場合は、プロパティとイベントをなるべくDependencyPropertyやRoutedEventにするべき。煩雑な代入処理やオブジェクトのライフサイクル管理、状態による表示変更など、直接アプリケーションロジックに関係しない多くのことをX…

プロジェクト内のコンテントファイルをStreamではなくファイルでUriを作る方法

WPF

本当はアプリケーションの作業ディレクトリがとりたいけど無いので(Formsにはあるが)以下の方法で。 new Uri(new Uri(Directory.GetCurrentDirectory() + "\\"), "res/hoge/hoge.dat"); "\\" が無いと、カレントの末尾のディレクトリが削られてしまうという…

Blendでテンプレートデザイン

WPF

ContextMenuもビジュアルにデザインしたいのに出来ない。うーむ何か方法はないのかな。 追記 やりたいことは、MenuItemに設定したスタイルをContextMenuにも適用したいということなので、Blendでデザイン済みのMenuItemを転用するだけで解決した。 まず、Ble…

Imageが原寸大で表示されない問題

WPF

画像ファイルのDPIの問題だった。GIMPとかで環境設定していないと、72DPIがデフォルトになっている。しかしWindowsは96DPIなのでXaml上に配置すると、およそ1.3倍(72分の96倍)大きく描画されてしまう。 mspaintで開いて上書き保存すると96DPIになる。しか…

WPFToolkitのAccordionのスライド領域が安定しない問題の回避方法

WPF

高さを可変にして、ウィンドウを広げたりアコーディオン以外に開閉する別のコントロールを縦に連結して使ってそれのサイズを変更すると、Accordion内のAccordionItemのオープン中のクライアント領域の高さがきちんと追随せずに、一番下のAccordionItemの表示…

WPFToolkitのAccordion

WPF

辿り着くまでが長かった。TabControlのスタイルを拡張してやると大変すぎるしExpanderだと複数組み合わせた全体を通してVercialAlignmentをStretchにできないし辛かった。最近入社した同僚のid:rokugenさんが「アコーディオンメニュー」と呼称してようやく「…

WPFToolkitを入れても、VisualStateManager.VisualStateGroups が利かない問題

WPF

WPFToolkitをインストールするとSilverlightや.NET4.0にしか無い、VisualStateManagerが.NET3.5のWPFでも使えるようになるはずだが、Visual StudioのXamlエディタでは「アタッチ可能なプロパティVisualStateGroupsが、型VisualStateManagerに見つかりません…

作業領域変更で位置を自動補正するWindowの挙動を抑制する手立てアリ!

WPF

先日、WPFの位置制御とAPPBAR制御との相性が悪い件で.NET的アプローチでの解決を模索していた中、YOUネイチブでイっちゃいなYO!と、まめしばやんさんからの助言をいただきイっちゃいました。 @ITフォーラムでのデリゲートをGCの対象から外す方法でもフィール…

C# 2008 Express Editionで、XAMLエディタが開かなくなった件

WPF

C# 2008 Express Edition SP1 と VS 2008 SP1を入れたら、あるPCだけ、C# 2008 Express EditionのXAMLエディタがただのテキストエディタになってしまい、[デザイナの表示]を実行しても、.xamlに対応するエディタはない的なエラーになっていた。サブマシンだ…

作業領域変更で位置を自動補正するWindowの挙動を抑制する手立てなし。

WPF

Formsと違って、WPFでAPPBARを作りにくい。どうしてもデスクトップの作業領域の変更でとんでくるWM_SETTINCHANGEで、WPFのデフォルトWndProcが、作業領域内にウィンドウを納めようとして座標を変更してしまう。自身が作業領域外に配置すべきAPPBARなのにもか…

非矩形ウィンドウではブラウジングできない。。

WPF

WPFアプリケーション内でWebページを見る場合は、 <Frame Source="http://www.gluegent.com/"/> …といったようにするだけなんだけど、FrameはどうもFormHostと同様、非矩形ウィンドウ(AllowTransparency=true)では表示されない。IEコンポーネントだろうし仕方ないか。しかし気持ち悪いことに、描画は</frame>…

リソースディクショナリの継承の罠

WPF

別のリソースディクショナリで定義したタイプスタイルを継承して拡張定義するためには、MergedDictionariesだとダメだった。例えば以下のような感じで、先に指定したリソースの中で定義しているものをBasedOnしているはずだが、実行時に当たったり当たらなか…

メモリリーク回避方法

WPF

川西裕幸さんのブログにある方法で、VisualBrushを使わないようにして対策できました。さすが中の人。感謝感謝。

メモリリーク解決…してない

WPF

VisualBrushを3Dで扱うとリークするという件は、VisualBrush の AutoLayoutContentプロパティをFalseにするだけで解決した。全くもって増えなくなった。 がしがし描画がアニメーションしているようなVisualを扱うと停止してしまうんじゃないかとは思う。根っ…

メモリリーク

WPF

WPFの3Dレンダリングの機能を使うと、グラフィックボードが貧弱なXpマシンで使用メモリが増え続けるという現象がおきている*1。 Yourkit Profilerを使うと、.NETのオブジェクトの数やメモリ、CLRのメモリは一定しているのに、VMメモリ、ユーザーメモリは増え…

続テーマライブラリの使い方

WPF

追記した。→ http://d.hatena.ne.jp/t-katochin/20080813/1218631976