かずきのBlog@hatena

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

WPF

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>…