OITA: Oika's Information Technological Activities

@oika 情報技術的活動日誌。

WPF

C# (WPF) で算出プロパティ

C# Advent Calendar ぽっかり今日だけ空きができたみたいなので、急きょ参加しておきます。 Webのバインディング系フレームワークでよくある算出(Computed / Calculated)プロパティをC# のMVVMでも使いたいという話。 ちらっと検索してみた感じ、当然のよ…

WPF 複数のValueConverterを連結して順番に変換する

WPF等のXAMLファミリーのBindingで、バインド元とバインド先の値の型が異なる場合、 値コンバータクラスを利用して変換をかける。 例えば、IsVisible みたいな名前のboolプロパティによって、trueになったら表示、falseになったら非表示というようなバインド…

WPF ListBox.SelectedIndexが勝手に変わると思ったら

ListBoxを配置して、適当に数値だけをメンバに持つオブジェクトをリストにして ItemsSourceに格納します。 検証環境のビルドターゲットは.NET 4.0。

WPF DataGrid.RowHeight指定のいろいろ

WPF DataGridのレイアウト設定はとかく複雑でわやよ。 今回は行の高さ指定に関する話。 DataGridには行の高さを指定できるプロパティがいくつもあるので その適用の優先順位とか知っておかないと、 設定してるのに変わってくれないぞ??ってハマることにな…

WPF BindingのPathにEnum型のインデクサを指定する

WPFはBindingに始まりBindingに終わるといっても 過言ではない。気がする。 今回はコレクション要素のバインドについて。

WPF DataContextを設定した直後にBinding先で値を参照する

突然ですが、以下の出力結果はどうなるでしょう? //適当なボタン var button = new Button() { Width = 120, Height = 30 }; //IsEnabledに"Used"というパスをバインド button.SetBinding(Button.IsEnabledProperty, new Binding("Used")); //Usedプロパテ…

WPF 自作ValidationRuleのプロパティにバインディング

どうも、僕です。 ザムルってもうワクワクしますよね。 ということで、Qiita XAML Advent Calendar 2014 21日目のエントリーになります。

WPF DataGridへのBindingに関する基本設計

なんか「wpf datagrid binding」で検索して以下の記事に流れてくる人が 異様に多いようだ。 [WPF]DataGridColumnへのバインディング しかし↑の記事ではあんまり一般的でないケースの話しか書いていなくて 申し訳ない気持ちになるので、たまにはちょっと入門…

WPF 枠なしでリサイズ&ドラッグ移動可能なウィンドウを作る

実は知らなかったんすけど、.NET 4.5から標準搭載された WindowChromeクラスってのを使うと VisualStudio2012,2013みたいなボーダーなしのウィンドウアプリとか 全然楽ちんにできるのね。

WPF Windows8で実行された際にポップアップが左右逆に出るのを防ぐ

前回書いてた問題、解決策が見つかったぜはっはー。 さすがはstackoverflowやー。 [WPF]文字列が表示領域に入りきらないときにポップアップで全文を表示する ↑の記事の最後に書いたとおり、 WPFのPopUpとかToolTipのPlacementの設定と、 Windows8のタブレッ…

WPF 文字列が表示領域に入りきらないときにポップアップで全文を表示する

WPFでの実装サンプル。 アプリの画面上で表示領域に文字列が表示しきれない場合に オンマウスで全文がポップアップ表示されるやつ。 ↑こういうやつ。 ポップアップと書いたけど、実際の実装はToolTipを使いました。 xamlのほうがスマートに書けそうな部分も…

WPF MVVMでDataGridのソートを扱うためのクラス設計

MVVM的な設計の中でDataGridのソート機能をどのように扱うかという話。 WPFのDataGridには標準で列ヘッダクリックによるソートの機能があるんだけども これをコードでも制御したいときに、ItemsSourceの中身はViewModel側にあるんだけど Viewでやるの?どう…

WPF DataGridColumnへのバインディング

DataGrid列のヘッダ表示内容とか列幅とか、Columnのプロパティに対して DataContext経由でViewModelのプロパティをバインドしようとすると 意外と一筋縄でいかないよという話。

C# List<T>もIList<T>も配列も公開しない

以前書いた、を公開してはいけないという話">FxCop:Listを公開してはいけないという話について、 最近はもうちょっと自分的にしっくりくる書き方が見つかったよという成長記録。

「汝は人狼なりや? for Windows desktop」公開

パソコンとモニタを使って人狼を遊ぶためのWindowsデスクトップアプリです。 もともと自分が人狼という遊びをやってみたくて作って内輪で遊んでたものなんですが、 テレビ番組にもなってなんだか人気沸騰中の人狼ゲームなので いくらか需要もあるかなと思っ…

WPF 特定のリソースの組み合わせでビルドが通らなくなるバグ

よっぽど変な勘違いをしていなければ、VisualStudio(MSBuild?)のバグだと思われる話。 再現環境は.NET 4.0, VS2010のC# Express。 あと.NET 4.5, VS Express 2012のfor Desktopでもやっぱり再現した。 正常に動作していたコードで、唐突にビルドが通らな…

ListBoxのItemsSource, SelectedItemへのBindingでバグ?

表題のとおり、WPFのListBoxで、ItemsSourceとSelectedItemを それぞれバインディング経由で使っていたときに、 バグといっていいかもしれない不具合があったので、一応メモ。 ちなみに手元の環境だと、.NET Framework 4.5では再現せず、 4.0だと再現するPC…

ボタン連打時に多重にリクエストを溜め込まない

ボタンクリックイベント等のハンドラの中で 時間のかかる処理をしてUIを固めてしまうと、 その間に連続してクリックした分がメッセージキューに溜め込まれ UIが動き出してから何度も連続でクリックイベントが発生するような動きになる。 単純に↓こんなふうに…

アプリケーションのStartupPathをちゃんと取得する

アプリの実行ファイルがあるディレクトリのパスの取得の仕方について。 例えば実行ファイルと同じディレクトリにテキストを出力したいとき、 File.WriteAllText("hoge.txt", "テキストファイルの本文"); とでも書けば普通はちゃんと実行ファイルのディレクト…