SourceChord

C#とXAML好きなプログラマの備忘録。最近はWPF系の話題が中心です。

WPF

WPFでの入力値検証・まとめ

今まで何回かに分けて書いてきたWPFのバリデーション関係ネタについて、自分でもわりと見返すので、この入力値検証関連の記事をまとめておきます。 あと、各種バリデーション方法のサンプルコード一式を、以下のリポジトリに上げておきました。 色々書いたブ…

WPFでの入力値検証・その9 ~エラー表示のローカライズ~

ずいぶん久しぶりだけど、WPFの入力値検証ネタ。 以前↓みたいなのをやりましたが、 このDataAnnotationsを使ったバリデーションを行う際に、エラーメッセージのローカライズをしてみました。

WPF用にLightBox的なポップアップ表示をするライブラリを作ってみた

こんな風に、LightBox的なダイアログ表示を行うライブラリを作ってみました。

MahApps.Metroを使ってみた

お手軽にWPFアプリにモダンなデザインを適用できる、MahApps.Metroというライブラリを使ってみました。 MahApps.Metro Documentation この手のモダンなデザインを適用するライブラリでは、 Modern UI for WPF(MUI)というのもあります。 まだちょろっと使って…

WPFでLightBox風のポップアップ表示をするサンプル

WPFでLightBox風のポップアップ表示を行うサンプルを作ってみました。 コードはこちら↓

Nugetでパッケージを作ってみる

Nugetパッケージを作ってみたので、作り方を少しメモしときます。 実際にやってみると、思ってたよりだいぶ簡単に作れそうです。 Nugetのパッケージを作るには、以下の二通りの方法があります。 Nuget.exeなどのコマンドラインツールから作成 Nuget Package …

WPFでシンプルな独自ナビゲーション処理のサンプルを書いてみた

WPFに標準で用意されてるナビゲーション系のクラス類が何かと扱いにくいので、もうちょいシンプルな独自のページ遷移を行うサンプルを書いてみました。

MVVMな設計のTips~サービスを作ってVMの依存性を排除~

WPF

最近、色々とMVVMな設計のサンプル類を見てると、○○Serviceみたいなクラスを作って、VMが他のモジュールへの依存を極力持たないように設計している例をよく目にするようになった気がします。 ここでは、MVVMでの定番の躓きポイント「VMからのダイアログ表示…

WPF向けにRelativePanelなどを実装したライブラリ~UniversalWPF~

↓のブログを読んでいて知りました。 UniversalWPF dotMorten/UniversalWPF · GitHub こんなコントロールを作ってくれてる方がいたんですね!! WPF用にRelativePanelやSplitViewを作ってくれてます。スバラシイ!!

AvalonEditを使ってみた

AvalonEditとは http://avalonedit.net/ .net環境で使える超高機能なテキストエディタのライブラリです。 シンタックスハイライトや、複数行の折り畳み機能、コード補間などの機能をもったエディタをお手軽に作ることができます。 C#でVisualStudio的なIDEを…

WPFにもx:Bind欲しいよね

UWPで追加されたx:Bind。とても便利ですね。 で、この機能WPFにも欲しい!!と思ったりするわけです。VisualStudioへの要望などを投票する、↓のサイトを見てみると、WPFにx:Bind追加してほしいって要望にたくさんの投票が集まってます。http://visualstudio.us…

VS2015のXAMLエディタの新機能~XAMLのRegion機能~

あんま知られてなさそうだけど、地味に便利そうな新機能。 XAMLでも、C#のRegionディレクティブのような感じで、コードにブロックを定義して折りたためるようになりました。以前channel9のWPF4.6新機能紹介の動画を見て気になってた機能ですが、さっそく使っ…

WPF用にシンプルなコレクションエディタを作ってみた

ちょっと必要に迫られて、コレクションエディタ的なものを作ってみました。extended wpf toolkitのCollectionEditorほどのカッチリしたエディタじゃなくて、「ちょろっとコレクションの編集したいだけ」、って位の時に使えるかと思います。 コレクションを任…

dotnetconf2015のwpf4.6紹介動画

WPF

先日のdotnetconf2015でのWPF4.6についての紹介動画があがってました。ちょっと時間が立ってしまいましたが、ざっと見てみました。 リスニング能力がダメダメなので、あまり細かいとこまでは見れてませんが…WPF in 4.6 and beyond (Channel 9)ということで、…

WPFでの入力値検証・その8 ~複数のプロパティが絡むバリデーションを作成する~

今度は、オブジェクト内の複数のプロパティが絡むバリデーション処理を実装してみたいと思います。 以下のような画面を作り、文字列を入力するテキストボックスと、文字列の上限数を入力するテキストボックスを作ります。 ViewModelには以下の二つのプロパテ…

WPFでの入力値検証・その7 ~独自の検証ロジックを作成する~

久しぶりに、WPFのバリデーション・ネタです。 以前、DataAnnotationsの機能を使って、プロパティの属性としてバリデーションの条件を記述する方法を書きました。 WPFでの入力値検証・その3 ~DataAnnotationsを使う~ - SourceChord このバリデーションの条…

イベントのマークアップ拡張~コレクション走査パスへの対応~

WPF4.5の新機能~「イベントのマークアップ拡張」で、イベント発生時のコマンド呼び出しをスッキリ記述する~ - SourceChord この間作成したイベントのマークアップ拡張を使ったInvokeCommandExtensionクラスですが、以下のような問題点がありました。 コレ…

WPFのBindingマークアップ拡張の実装を見てみる

この前書いたイベントのマークアップ拡張ですが、記事の最後に書いた通り一部の動作に制限があります。 WPF4.5の新機能~「イベントのマークアップ拡張」で、イベント発生時のコマンド呼び出しをスッキリ記述する~ - SourceChord DataContextの変更に追従せ…

WPF4.5の新機能~「イベントのマークアップ拡張」で、イベント発生時のコマンド呼び出しをスッキリ記述する~

この記事はXAMLアドベントカレンダー2014 8日目の記事です。 前置き 先日のConnect();では、久しぶりにWPFの今後のロードマップの話がありましたねw WPFの次バージョンが気になる今日この頃ですが、今日は現時点での最新版WPF4.5で追加されていた新機能につ…

WPFの次バージョン情報キター!!

また後でゆっくり見ようかな。 φ(..)メモメモ.NET Blog

WPFで非同期&キャンセル可能な画像の読み込みを行う

昨日書いた、WPFでの画像読み込み処理をキャンセルする方法を、使いやすいようにクラスにしてみました。 非同期での読み込みと、CancellationTokenを用いた処理のキャンセルに対応したメソッドを作ってBitmapFrameExというクラスにしています。 WPFでBitmapF…

WPFでBitmapFrame.Createなどの画像ロード処理を強制的にキャンセルさせる

WPFで画像を扱ってて遭遇した困りごと。。。BitmapFrameやBitmapDecoder、BitmapImageクラスなど、WPFには画像の読み込みをする手段として色々なクラスが用意されています。 しかし、それらのどのクラスも、WinRTの画像系クラスのような○○Asyncっていう非同…

特定の値以上だったら動作するTriggerを作る

WPFのTrigger、便利ですよね。 Styleを作るときに、特定の条件の時に表示を切り替えたり簡単にできて、非常に便利。 でも、ちょっと痒いとこに手が届かない。 Triggerだと、指定したプロパティが特定の値の場合に動作します。 なので、「指定したプロパティ…

バインディングのDelayプロパティで、更新通知の頻度を制御する

WPF4.5でBinding構文に追加されたDelayプロパティというものがあります。 これ、地味に便利だけど、あまり知られてなさそうなのでメモしときます。BindingBase.Delay プロパティ (System.Windows.Data)このDelayプロパティの効果は↓の図のようなイメージです…

ウィンドウの動きに追従するPopupコントロールを作る

WPF標準のPopupコントロールについて WPFのPopupコントロールを使うと、任意のUIElementをポップアップ表示することができます。 この時ポップアップ表示される内容は、別ウィンドウとして元のウィンドウの上に表示されます。PopupのStaysOpenプロパティをFa…

WPFでの入力値検証・その6 ~複数のエラー表示への対応~

以前↓で書いたINotifyDataErrorInfoのベースクラスの実装ですが、一つのプロパティに複数のエラーが同時発生している、という状態を正しく表現できていなかったので修正しました。 WPFでの入力値検証・その5 ~INotifyDataErrorInfo実装のベースクラスを作成…

OpenCvSharpでWebカメラ画像のキャプチャ

今度は、Webカメラから画像をキャプチャしてWPFのウィンドウに表示してみました。 前回の動画再生とほとんど同じです。

OpenCvSharpで動画再生

OpenCvSharpネタの続きです。 今度はOpenCvSharpを使って、動画ファイルの再生をしてみます。

OpenCvSharpを使ってみる

OpenCVをC#などの.Net系言語で扱えるようにラップした、OpenCvSharpというライブラリを使ってみました。 コレ、すごくいい感じですね。 OpenCvSharp https://github.com/shimat/opencvsharp

WPFでの入力値検証・その5 ~INotifyDataErrorInfo実装のベースクラスを作成~

(10/20追記) この記事で書いたValidateableBaseクラスでは、複数のエラーが発生した時に正しくエラー状態を保持できません。 ↓に続きを書きました。 WPFでの入力値検証・その6 ~複数のエラー表示への対応~ - SourceChord 立て続けにWPFでの入力検証ネタを…