読者です 読者をやめる 読者になる 読者になる

かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

WPFでWindowが閉じられたときにViewModelの後始末メソッドを呼ぶ

そういう動きをするビヘイビアを作ればOKです。こんな感じで。 public class ViewModelCleanupBehavior : Behavior<Window> { protected override void OnAttached() { base.OnAttached(); this.AssociatedObject.Closed += this.WindowClosed; } private void Windo</window>…

WPFからUWPのAPIを使ってBLEの操作をしよう

WPF

さて、UWPのAPIを使えるということで先日アドバタイズパケットの受信をやりました。 blog.okazuki.jp 今度はBLEの通信をしてみたいと思います。 参考ページは以下。 blog.fenrir-inc.com そして、今回使うセンサーはSensorTagのv1です。 www.tij.co.jp Windo…

WPFでBLEのアドバタイズパケットを拾ってみよう

WPF

UWPのAPIを使ってできるかやってみます。 まず、WpfBleSampleAppという名前でWPFアプリケーションを作成してNuGetからUwpDesktopをインストールします。こいつは、UWPを使うために必要な設定をやってくれる便利な奴です。 次に、以下の記事を参考にアドバタ…

WPFのBehaviorをStyleで使う方法

昔書いた記事にコメントがついたので改めてやってみました。 blog.okazuki.jp 最近はGitHubがあるのでコードを共有するのが楽でいいですね。 こんなクラスを用意してやります。BehaviorをCloneして追加してやる感じです。Cloneして渡さないと同じBehaviorの…

Prism.WpfでPopupWindowActionで表示した要素の中でRegionManagerを使った画面遷移がしたい

というサンプルをGitHubにあげました。 github.com 結構RegionBehaviorを使ったりBehaviorを使ったり頑張ってます。 ここら辺が現実的な妥協点かもしれませんと思います。

WPFでPrismをライトウェイトに使いたい「Hello world」

WPF版Prismは使いこなすと強力です。でも使いこなすの大変です。ハイ。学習コストかけてられないし、学習コストかけたからといって1個のアプリ開発で、そのコストを回収できるかもわかりませんですしね。 ということで、なるべくライトにPrismを使ってみたい…

Prism.Wpfで子WindowでRegionを使う方法

アップデート もうちょっと頑張ったサンプルをGitHubに公開しました。 github.com 古い内容 PopupWindowActionで表示するWindow内で画面遷移したい!とかいうことがあると使えないんですよね。ということで解決策として、RegionManagerを新しく作って、それ…

WPFでTextBoxに入力エラーがないときだけ押せるボタンを実現したい

1つ前でVMでやるのがおすすめですよって書いたけどどうやるの?っていう記事です。 blog.okazuki.jp 今回はReactivePropertyの組み込みのエラーチェック機能を使ってやってみます。まず。intしか受け付けないValidationAttributeを作ります。 using System.C…

WPFでTextBoxに入力エラーがないときだけ押せるボタンをXAMLで実現したい

WPFでint型をバインドしたTextBoxとかって入力エラーがあると赤色枠がついていい感じにしてくれますよね。ただしViewModelからは、そのエラーは検知できない。 でも、ボタンは押せないようにしたい。そんなときは、こんなXAMLで実現できます。

Metro.cs#2 WPFからみるMVVM で WPFから他プラットフォームへの展開というテーマで話してきました #metrocs

doc.co 資料を公開しておきます。今回からSlideShareじゃなくてdocs.comにしてみました。 Modelをしっかり作ろうぜ!っていうことでちょびっと話してきました。 試行錯誤した結果なので、これが正しいかはわからないですが…。まぁ一例ということで。

Prism.WpfのApp.configによるModuleCatalogの構成の仕方をPrism自習用リポジトリに追加しました

Prism Template Packを使うと簡単にApp.configによるModuleCatalogの構成ができるということで、今まで書いてなかったそこの部分についてPrism自習用リポジトリに追記しました。 github.com

Windows FormsからWPFやUWPに来て戸惑うこと

Buttonに文字を設定するのにTextじゃないということ。 Contentプロパティに設定しないといけないというやつですね。 ふむふむ、コンテンツね…って覚えたらTextBlockはTextプロパティなのかよ!という理不尽な扱いを受けてしまいます。 これの見分け方なんで…

WPFのDataGridの左上を押しても全選択したくない

WPF

というときどうするか。ControlTemplateをいじりましょう(完 WPFのいいところはControlTemplateで、完全にコントロールの見た目をカスタマイズする余地が残されてるという点ですが、WPFのプロパティの範囲でできないカスタマイズとかが出てきたらControlTem…

Prism.Wpfのプロジェクトテンプレート

WPF

PrismのWPFとXamarin.Forms(こっちはまだPreview)には、プロジェクトテンプレートが提供されています。 拡張機能でPrismで検索すると、Prism Template Packというものがヒットします。 こいつをインストールすると、Prism.Unityを使ったプロジェクトテンプ…

WPFでListBoxで要素が表示されてるか確認してみる

WPF

最適解じゃなさそうだけどこんな感じで…。

WPFでメインウィンドウ閉じたらアプリが終了するようにする

WPF

ApplicationのShutdownModeをOnMainWindowCloseに変更すればOKです。 <Application ... ShutdownMode="OnMainWindowClose"> ... </Application>

WPF4.5入門のKindle版をアップデートしました

WPF

www.amazon.co.jp 図がずれたり、図中の日本語が文字化けしていたのを、全て画像化したので文字化け等が無くなりました。 因みに、上記のKindleで売ってるものは、SlideShareからPDF形式のものはダウンロード出来ます。通常はそちらを読んで頂いて買ってもい…

WPFのDataGridにstringの2次元配列をバインドしたい

WPF

小ネタです。WPF(に限らずですが)のBindingは、配列の要素にインデックスでアクセスが可能です。 なので、以下のようなBinding式を書くことで、配列を表示することが出来ます。

WPFのGridSplitterで*でサイズ指定してるときにサイズの保存と復元をする方法

WPF

このお題で2個より多い時って言われて悩んだ結果です。 blog.okazuki.jp サイズを*で指定すれば、GridSplitterは画面のサイズを超えてリサイズされないという特性をもちます。これでOK。じゃぁあとは保存と復元をどうやるかですが、こんな感じでいけます。 p…

WPFのGridSplitterでピクセル指定の時に画面外までサイズ変更できなくする

WPF

という方法です。 ColumnDefinitionのMaxWidthを指定してやれば実現できました。こんな感じのConverterを用意しておきます。 using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Text; using Sy…

FriendlyでFrameを使ったアプリをテストする その2

blog.okazuki.jp 1つ前の記事でWPFContentControlなるものをこさえてまでやった方法ですが、Friendly作者の石川さんに聞いたらさくっともっといい方法を教えてもらえました。 AppVar型にもLogicalTreeメソッドはあるのじゃよ 個人的にWPFContentControlを作…

FriendlyでFrameを使ったアプリをテストする

追記 blog.okazuki.jp この記事の内容より良い方法がありましたので上の記事に書いてます。 あと、この記事に書いたWPFContentControl足してもらえたみたいです。 元記事 という要望がありました。 WindowControlのLogicalTreeで辿ればいいや!って思ってた…

ReactiveProperty + Prism.Wpfでリストに表示されてる項目を編集するサンプルを書いてみた

github.com ListBoxに表示されてる項目を選択してボタンを押すとポップアップが出てきて編集するっていう簡単なサンプルです。

RxとReactivePropertyを使って、WPFでUnidirection Data Flowを実現するを真似してみた

ありがたいことに最近ReactivePropertyを勧めたら使い始めて頂けました。 qiita.com このコードを大げさに書いたらどうなるかなぁというのでやってみました。 ということでModel部分。 なんかきっかけがあるタイミングで、インクリメントし続けるだけの奴。 …

WPF 4.5入門をKindleに公開しました

SlideShareで無料で公開してるPDFをKindleで1205円で公開を始めました。 www.amazon.co.jp Kindleでどうしても読みたいという方や、これくらいなら払ってやってもいいかという人はぽちってくれると純粋に私が喜びます。 SlideShareのほうは、引き続き公開し…

Prism 6.0のRegionBehaviorについて書きました

github.com

PrismのModuleの読み込み順序の制御なんかについて書きました

github.com Moduleのオンデマンド読み込みや、Moduleの依存関係の定義方法なんかを書きました。

EventAggregatorについて書きました

github.com Prism自習用のリポジトリにEventAggregatorについて書きました。

Prismのナビゲーションについて書きました

github.com

InteractionRequestについて書きました

github.com ユーザーとの対話操作を実現するためのInteractionRequestについてPrismの自習用リポジトリにサンプルとともに解説を上げました。

Prism 6.0のMVVMの基本クラスについて書きました

github.com さらっとコードだけですが。

Prism6.0自習用リポジトリにModuleの使い方くらいまで書きました

github.com 今、BootstrapperとViewModelLocatorの使いかたと、ModuleとRegionあたりくらいのさわりを書いてます。

Prism 6.0自習用リポジトリ作成しました

自習用に書き溜めていきたいと思います。 github.com

Prism 6.0がリリースされました

MSのP&PのチームからMS MVPが主体となったチームに移管されてから初のWPF版PrismであるPrism 6.0がリリースされました。今までNuGetでPrismをインストールすればよかったのが、Prism.Coreをインストールするようになっている点に注意です。 www.nuget.org リ…

WPFで画像表示時にファイルをロックしないようにしたい

WPF

ネタ元 ListBox にイメージをデータバインドした時に画像を削除する方法 確かにWPFでImageのSourceにstringをBindingしたときは、ファイルがしばらくロックされちゃって困ることがあります。これをロックされないようにするには、自前のコンバーターでファイ…

DataGridで特定の列の値が重複してる行だけ色を変えたい

という問題が出されました。 うんうんと頭をひねった結果こうなりました…ちょっと全ループしてるのがダサい。ReactiveProperty 2.x前提です。 まず、表示するデータ。 using Reactive.Bindings; namespace DupItemColorApp { public class PersonViewModel {…

WPFのDataGridの左上のボタンの色の変え方のサンプルコード

WPF

コードレシピにアップしました。 久々に書いてみてびっくりしたのは、コードのライセンスがApache2.0からMITがデフォルトになってたところですね。 As Isってことでよろしくお願いします。 WPFのDataGridの左上のボタンの色の変え方 in C#, XAML for Visual …

WPFのDataGridの左上のボタンの色を変えたい

プロパティとかでさくっとはいかないものなんですね。 DataGridの左上のボタンは{ComponentResourceKey ResourceId=DataGridSelectAllButtonStyle, TypeInTargetAssembly={x:Type DataGrid}}なので、その名前のKeyを持ったButtonのStyleを定義してやればいけ…

PrismのRegionをなるべく仰々しくない方法で使う

Prismの全機能を使おうと思ったらModule使ったりとか結構だるいです。でも「Regionで画面区切って画面遷移できる機能とかは使いたい。」と思いました。 思考錯誤して出来たのでメモっておきます。 NuGetからのインストール Prism.UnityExtensionsをNuGetから…

WPFでBindingを強制的に評価する

WPFでBindingを強制的に評価したいときってありますよね?(ない?) そんなときはコントロールからBindingExpressionを取得してUpdateTargetメソッド(VMからV側の更新)やUpdateSourceメソッド(VからVMへの更新)を使います。 例えばTextBlock型のtextBlo…

C#からWin32API叩く

P/Invokeもいいですが、C++/CLI経由も個人的に好きです。例えばアクティブなWindowのタイトルを取りたいときとか…。 C++/CLIでこんなクラスを用意しておく。 // CPPCLR.h #pragma once #include "Stdafx.h" #include <Windows.h> #include <tchar.h> using namespace System; nam</tchar.h></windows.h>…

Leap Motionで指先を画面に表示するサンプルをコードレシピにおきました

Leap MotionとRxって相性いいですね。ということで、Leapの指先の情報を画面に表示するサンプル作ったので置いておきます。 LeapMotionで指の先を画面に表示する in C# for Visual Studio 2013

WinRTのAPIをデスクトップアプリから使う 8.1版

Windows 8.0のころとそんなに変わりありませんでした。 デスクトップ アプリからのWinRT API利用 | ++C++; // 未確認飛行 C ブログ 8.0の頃はプロジェクトファイルに8.0と書いてたけど8.1にします。プロジェクトをアンロードして下記の内容を最初のPropertyG…

ItemsControlの劣化版を自作してみる(DataTemplate対応コントロールの作成)

DataTemplateに対応したコントロールの作り方ということで、こちらのサイトを写経させていただきました。 DarksideCookie | Using DataTemplates in custom controls カスタムコントロールの作成 カスタムコントロールを新規作成して、Generic.xamlに適当にS…

WPFのXAMLのTypeConverterお試し

WPFのXAMLではTypeConverterを自作して文字列から、オブジェクトを作るようなことが簡単にできるようになっています。ということで簡単に試してみました。XAMLからオブジェクトへの変換にはTypeConverterクラスのConvertFromメソッドとCanConvertFromメソッ…

Mvvm LightとPrismとで同じプログラムのサンプル書いてみました

先日作ったPrism + ReactivePropertyのカウンターアプリをMvvm Light Toolkit使って作ってみました。 Prism 5とReactiveProperty - かずきのBlog@hatena コードレシピにアップしてます。 Prism + ReactivePropertyとMVVM Light Toolkit + ReactiveProperty i…

Prism 5とReactiveProperty

Prism for WinRTとReactivePropertyの連携書いてみたので、WPFのPrism5での使用方法について書いてみようと思います。 参照についかするもの 以下のライブラリをNuGetから追加します。 ReactiveProperty Prism.Mvvm Prism.Interactivity 続いて、以下のアセ…

Prism 5で足し算アプリ

コードレシピに書いてみました。 Prism 5で足し算アプリ in C# for Visual Studio 2013

よりMVVMに、よりライトにPrism 5がリリースされました

10日ほど前の2014年4月19日にPrism 5 for .NET4.5がリリースされてました。 patterns & practices: Prism - Download: Prism 5.0 for .NET 4.5 Prismは、MSの中の人たちが作ってるOSSのWPF用(SL用やストアアプリ用などもある)のフレームワークで、複合型アプ…

Visual Studioからデザイン時のDataContextを設定する方法

今までは、Blendのデータタブから設定するか、手書きXAMLするしかないと思ってました。ですが、今日Visual StudioのBindingのダイアログを開いてよく見てみると… DataContextがマークアップで設定されていません。 デザイン時のDataContextは、オブジェクト…