かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

WPF

MVVM でイベント引数の値を ViewModel のコマンドに渡す方法

こちらを見て、そういえばさらっと書いてるだけだったなぁと思ったので…。 elf-mission.net イベント引数を ViewModel で使いたい マウス系イベントや選択系イベントは、イベント引数にしか入ってない値とかもあったりして使いたくなりますよね。 まぁ、イベ…

WPF のビヘイビアーが入ってる Blend SDK for Visual Studio が Visual Studio 2019 で消えた件について

WPF

2017 までは Visual Studio についてきた Blend SDK for Visual Studio でしたが 2019 で消えました。2017 から必須じゃなくてオプションになってたので変だなぁって思ってたんですよ。 id:nuitsjp さんのブログにも書いてありますというか、そのブログを見…

Prism 7.x で DI コンテナ固有の機能を使いたい

Prism 7 系で色々仕様変更がありましたが、その中でも大きな変更のうちの 1 つが DI コンテナにクラスを登録する処理の変更です。今までは各 DI コンテナのクラスを直接触っていましたが IContainerRegistry インターフェースというインターフェースが Prism…

Livet 2.2.0 をリリースしました

しました。 www.nuget.org LivetExtensions も更新しました。 www.nuget.org プロジェクトテンプレートも最新版を初期状態で参照しているように Visual Studio の拡張機能も更新しています。 marketplace.visualstudio.com 変更内容 GitHub のリリースページ…

Livet の .NET Core 3.0 Preview 1 向けの NuGet パッケージと VS2019 Preview の拡張機能を作ってみました

.NET Core 3.0 向けのパッケージ作るのがどれくらい大変なのか試すついでにやってみました。結果は思った以上にさくっと出来ました。 NuGet はこちら。 www.nuget.org VS2019 向けの vsix は GitHub のリリースページからダウンロードできます。 github.com …

.NET Core 3.0 でのデスクトップ開発

先日の Connect(); 2018 で .NET Core 3.0 Preview 1 が出ましたね!そして、前々から噂されてた WPF / Windows Forms のサポートが試せます。まぁ、前々から alpha 版とか使って試せましたが alpha はちょっと…という感じでも Preview なら許容範囲かな?と…

Livet 2.1.0 をリリースしました

Pull Request を送って頂いたので取り込んでリリースしました。 www.nuget.org それに合わせて Visual Studio 拡張機能も更新しています。 marketplace.visualstudio.com 変更点 RaisePropertyChangedIfSet というメソッドを追加しました。以下のように使い…

Prism の v7.1 がリリースされてました

Prism v7.1 が2週間ちょっと前にリリースされてました。 github.com かなり大きな更新に見えます。 個人的にインパクトが大きそうだと思ったのが Autofac と MEF が Prism の将来のサポート対象から外れてしまうことでしょうか。 Autofac はイミュータブルに…

REST API から Windows アプリの操作

Project Roma というのが発表されてもうかなりの時間がたちますが、UWP 同士では GA してて Android/iOS/Microsoft Graph API は Preview な感じです。Microsoft Graph API のカテゴリを見ると Cross-device experience という名前になってますね。 早く GA …

Livet v2.0.0 をリリースしました

先日リポジトリを触る権利と nuget のパッケージの更新の権利もらったので pre バージョンを公開してたのですが新たな issue も上がってこないので一旦正式版として公開しました。 marketplace.visualstudio.com プロジェクトテンプレートもありますし。 ア…

WPF や WinForms などで UWP のコントロールを使う XAML Island(プレビュー)

UWP のコントロールを WPF や WinForms などで使う XAML Island ですが現在プレビュー段階ですが試すことが出来るようになっています。 NuGet パッケージのソースとして https://dotnet.myget.org/F/uwpcommunitytoolkit/api/v3/index.json を追加することで…

.NET Core 3.0 でデスクトップアプリ開発を試してみる(プレビュー)

.NET Core 3.0 で WPF とかみたいなデスクトップアプリの開発がサポートされるというのが発表されて久しいですが試せる環境が整いつつあります。とりあえず試してみたログです。 まず、.NET Core 3.0 を以下の URL からダウンロードしてインストール github.…

LivetCask v2.0.0-pre1とLivetExtensions v2.0.0-pre1 を公開しました

とりあえずプロジェクトの構造を自分好みにしたのとターゲットフレームワークを現在サポートされている最低バージョンの .NET Framework の 4.5.2 まで上げました。 NuGet 以外は今のところメンテナンスするつもりはありませんが、気が向いたら vsix 作って…

Livet のメンテナーになりました

WPF

まだ権限追加してもらっただけで何もしてないですが尾上さん作の WPF で MVVM で開発するときに国内でよく使われてる Livet のリポジトリに push する権限と nuget にパッケージをアップロードする権限を付けてもらいました。 以下のようなポリシーでやって…

WPF などの .NET Framework のアプリから UWP の API を呼ぶ

同じチームの Matteo さんが書いてくれてた記事に ConditionalAttribute が使ってあって、あぁこういう機能あったなぁと思ったのでメモがてら記事をなぞってやってみました。 Desktop Bridge – Enhancing a desktop application with the UWP APIs – App Con…

C# で何か出来るのか?まとめてみた

C# は好きな言語です。C# 1.0 が 2002 年 4 月に出てからもうすぐ16 年!?になろうとしています。 今でも結構イケてる部類にランキングしてると個人的に思ってる C# ですが何が出来るのか?というのをまとめてみたいと思います。C# をこれから始めようと思…

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を使ったプロジェクトテンプ…