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

SourceChord

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

WPFでフォントの列挙を行う方法

WPFにはフォント選択などのダイアログがありません。 で、フォント選択ダイアログを作るときなどに必要になる、WPFでのフォント一覧の列挙方法を調べてみました。結果はこんな感じ フォント一覧の列挙 まずは、フォントの一覧の表示からやってみます。 シス…

アプリの多重起動防止を拡張メソッド一発で行う

以前↓のような方法でアプリの多重起動防止のコードを書きました。 アプリの多重起動を防止する - SourceChord でも、イベントハンドラをちょこちょこと追加しなきゃいけなくて、もうちょっとスッキリ書けないか考えてみました。

MVVMな設計でVMからダイアログ表示を行う

MVVM界隈でよく話題になっている、「VMからViewに指示をしたい」という時の定番ネタ。 VMからダイアログを開く方法を添付ビヘイビアで作ってみました。↓の記事を参考に作ってみました。 トロこんぶ: 「MVVMでダイアログ表示のためにメッセンジャーを使用する…

VMからウィンドウを閉じる添付ビヘイビア

MVVMな設計でアプリを作るときの、よくある悩みとして、 VMから画面を閉じる処理をどうやればいいんだ?? というのがあります。これって、添付ビヘイビアを使えばスッキリ書けるのでは、、、と思い、 ウィンドウを閉じる動作を付加する添付ビヘイビアを作っ…

ウィンドウをフルスクリーン化する添付ビヘイビア

以前↓のような記事を書きましたが、このようにウィンドウをフルスクリーン化する処理を添付ビヘイビアにしてみました。 WPFでフルスクリーン表示 - SourceChord

ファイルドロップ時にコマンドを実行する添付ビヘイビア

添付ビヘイビアの仕組みが結構便利だと思ったので、ファイルドロップ時にコマンドを実行させるための添付ビヘイビアを作ってみました。 FileDropAttachedBehavior.Commandという添付プロパティにRelayCommandをセットすると、ファイルドロップ時にコマンドが…

添付ビヘイビアを使って、任意のコマンド呼び出しを行う

以前、↓で書いたRelayCommandですが、これはCommandプロパティを持つコントロールでしか使用できません。 XAMLからViewModelのメソッドにバインドする~RelayCommand~ - SourceChordRelayCommandをバインドできるのは、↓みたいにCommandプロパティを持って…

添付ビヘイビアを作る

WPFやSilverlightなどのプラットフォームで、昔からよく使われていたテクニックで添付ビヘイビアというものがあります。 この手法は、後にBlendSDKにも取り込まれ、Behaviorという共通の実装がSDKに導入されています。ですが、ここはまず、自分で添付ビヘイ…

XAMLでズルいデザイン~その4・ズルいグラデーション・配色~

今度はグラデーションと配色についてです。 参考リンク ズルいデザインテクニック2013 + セミフラット version // Speaker Deck

XAMLでズルいデザイン~その3・ズルい背景~

ちょっと時間が空きましたが、今回は↓のスライドでズルい背景と紹介されていたものをWPFで作ってみます。 ズルいデザインテクニック2013 + セミフラット version // Speaker Deck

Win8でComboBoxがDisable時にグレーアウト表示されない

WPF&Win8環境でComboBoxをDisable表示にしても、ComboBoxに表示しているコンテンツがグレーアウト表示になりません。 これは、文章で書くより、画面キャプチャとコード見た方が早いかも。 ComboBoxのIsEnabled=Trueの時の表示 この表示は特に問題ありません…

ぼかした画像のBrushを作るマークアップ拡張

以前↓で書いた、ぼかしを強烈にかけた画像を高速にする方法ですが、 WPFで強めのブラーを高速にかける - SourceChord これを、Brushとして使えるようにしてみました。 マークアップ拡張も作ったので、以下のようにImageBrushを使うような感覚でぼかしの効い…

マークアップ拡張を作って、XAMLでグラデーションを簡単に書く方法

マークアップ拡張って、結構便利!! マークアップ拡張は初めて作ってみたけど、覚えておくと結構便利かも。マークアップ拡張については、以下のリンクが参考になりました。 http://okazuki.hatenablog.com/entry/20130103/1357205143 http://d.hatena.ne.jp/k…

WPFで強めのブラーを高速にかける

普通にぼかしを強めにかけてみる 背景画像として、ぼやけた画像を使いたいことって、結構あると思います。 で、普通にこれをやると、こんな感じだと思います。 <Window x:Class="WpfBaseTemplate1.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Width="1024" Height="768"> <Grid> </grid></window>

VS2013向けのXAML Styler

XAML開発の定番拡張機能のXAML Stylerは、VS2013に対応してなくて残念に思ってたのですが、 XAML Stylerを、VS2013向けにビルドしなおして、VS Galleryに登録してくれた人がいるみたい。 Nico's digital footprint | Branching XAML Styler XAML Styler exte…

XAMLでズルいデザイン~その2・ズルいtext-shadow~

前回に引き続き、ズルいデザインで紹介されてた内容をWPFでマネしてみます。 今度は、文字の装飾をやってみたいと思います。 参考リンク ズルいデザイン(1):少ない手間と知識でそれなりに見せる、ズルいデザインテクニック (2/2) - @IT で、WPFでマネし…

XAMLでズルいデザイン~その1・ズルい線~

以前「ズルいデザイン」というスライドとかが話題になってましたが、その内容をWPFでマネしてみました。 参考リンク ズルいデザイン(1):少ない手間と知識でそれなりに見せる、ズルいデザインテクニック (1/2) - @IT ズルいデザインテクニック2013 + セミ…

WPFの開発用にコードスニペットを登録する

WPFのアプリ開発に役立ちそうなコードスニペットを作ってみました。 作ったのは、こんな感じのコードスニペットとか。 コードスニペットの作成方法は、↓の記事が参考になりました。 http://www.tk4.co.jp/develop/codesnippet/recipe.htmlコードスニペットの…

VSのプロジェクト・テンプレートを作成する

VisualStudioには、プロジェクトのテンプレートを、ウィザード形式で簡単に作る機能が備わっています。 で、さっそくWPF開発でよく使うファイルをまとめたテンプレートを作ってみました。テンプレートの作成には、↓の記事がとても参考になりました。 http://…

バインドしてるObservableCollectionを非UIスレッドから操作する

WPF4.5では、複数スレッドからのコレクション操作のサポートのために以下のメソッドが追加されました。 BindingOperations.EnableCollectionSynchronization メソッド (System.Windows.Data)これを使って、非UIスレッドからのObservableCollecion更新処理を…

Codeplex風デザインのボタンを作りました

Codeplexのボタンデザインを真似してみました。 出来上がったデザインはこんな感じ↓

キャプション付きの画像表示を行うサンプル

マウスオーバー時に、アニメーションしながらキャプション表示を行うControlTemplateを作ってみました。

Labelの上下と背景をグラデーションで装飾する

↓の記事で紹介されていた、テキストの上下と背景をグラデーションで装飾するというデザインを、WPFで真似してみました。 [CSS]テキストの天地に美しいグラデーションのボーダーと背景を適用するスタイルシート | コリス 結果はこんな感じ。

XAMLからViewModelのメソッドにバインドする~RelayCommand~

RelayCommand/DelegateCommand WPFなどのXAMLを用いたフレームワークでは、Commandを使ってXAMLからViewModelのメソッドを呼び出すためには、DelegateCommandとかRelayCommandと呼ばれるクラスを作ります。で、VMにこのコマンドのインスタンスを作成してXAML…

NavigationServiceを拡張してちょこっと便利にする

WPFのページ遷移で用いるNavigationServiceクラスですが、微妙に痒いところに手が届かない感じです。 そこで、拡張メソッドで便利メソッドを追加してみました。

Blendを使ってButtonのホバーエフェクトを作る Part5

Webサイトのナビゲーション風ボタンです。 ButtonのコンテンツにDropShadowEffectをかけて、ぼわっと光ってるように表示します。 こういう動作は、ButtonよりHyperLinkとして作った方が適切な気もするけど、 WPFのHyperLinkコントロール、使い勝手悪いし。。…

Blendを使ってButtonのホバーエフェクトを作る Part4

今回は、Web系のデザインでよくありそうなタイプのボタンを作ります。

Blendを使ってButtonのホバーエフェクトを作る Part3

ボタンのホバーエフェクト、さらに続きます。 今回も、xamlだけメモ。

Blendを使ってButtonのホバーエフェクトを作る Part2

昨日の続きで、また別のホバーエフェクトを真似してみました。 今回はblendの操作手順とかはなしで、xamlコードだけメモしときます。 てか、添付プロパティとかを多用してると、BlendのUI上からアニメーションの設定とかできない。。。 (ContentPresenter内…

Blendを使ってButtonのホバーエフェクトを作る

cssでボタンのホバーエフェクトを色々紹介している、以下の記事が面白かったので、WPFで真似してみました。 http://www.nxworld.net/tips/css-only-button-design-and-hover-effects.html cssよくわからんから、なんとなーく真似してるだけですが。。。W ↓…

NavigationWindowを使った時の、F5キーやBackSpaceなどのNavigationCommandsを無効にする

以前↓に書いたNavigationWindowですが、 http://d.hatena.ne.jp/minami_SC/20130831/1377942291 このWindowでは、F5キーでページの再読み込みをしたり、Backspaceで前のページに戻るなどのショートカットキーが効きます。

デスクトップ画面にコメントなどの落書きを書き込むアプリを作りました。

↓の動画みたいに、デスクトップ画面上でコメントなどを書き込むためのツールを作ってみました。 ↓コードはCodeplexに登録してみました。 DesktopAnnotator 一応、用途としては、以下のような使い方を想定しています。 ・プレゼンとかしてる時に、画面上に色…

WPFでフルスクリーン表示

フルスクリーン表示なアプリって時々作るので、備忘録としてメモ。WPFでのフルスクリーン表示をするときは、ウィンドウクラスに以下の設定をする。 プロパティ名 値 WindowStyle None WindowState Maximized Topmost True

独自のMessageBoxを作る Part2

MessageBoxはMessageBoxButton型の引数を受けることで、 表示するボタンの種類や、MessageBox.Show()メソッドの戻り値などの動作が変わります。今回は、その辺の実装を行います。

独自のMessageBoxを作る Part1

WPFでメッセージボックスを出したい場合、MessageBox.Showメソッドで表示することができます。 http://msdn.microsoft.com/ja-jp/library/system.windows.messagebox.aspx しかし、このメッセージボックス、微妙に使い勝手が悪い。。。 表示位置が常にディス…

XamlReader/XamlWriterでXAMLを読み書き

XamlReaderクラスとXamlWriterクラスを使うことで、簡単にXAMLの読み書きができます。 ということで、さっそく使い方。

アプリの多重起動を防止する

アプリの多重起動防止をしてみました。 ↓のサイトを参考にしてます。 http://nine-works.blog.ocn.ne.jp/blog/2011/01/wpf_06c9.html開始時にMutexを使って多重起動のチェックをして、アプリ終了時にMutexの解放をすればよいらしい。 XAMLにイベントハンドラ…

WPFの各種コントロールのタッチパネルでの動作

WPFで作成するデスクトップアプリは、タッチ操作で使うシチュエーションは少ないかもしれませんが、、、 タブレットでタッチ操作した時、WPFの標準コントロールがどんな風に動くかを試してみました。

WPFでスクリーンショットの取得

デスクトップ画面などのスクリーンショットを取得する機能は、WPFのAPIとしては用意されていません。 で、どうやったらスクリーンショットを取得できるか調べたのですが、Drawingのメソッドを用いることでスッキリと実装できるようです。 参考リンク http://…

NavigationWindowを使った画面遷移

WPFでは、Windowクラスの代わりにNavigationWindowというクラスを使うと、複数ページ間で画面遷移を行うプログラムを簡単に作成できます。 NavigationWindowでは、SourceプロパティでPage要素を持ったXAMLを指定すると、そのページを表示できます。ちょっと…

Win8環境でWPFのToolWindowを最大化した時のバグ?

Windows8で、WPFのToolWindowを表示し、 タイトルバーなどをダブルクリックして最大化すると、 画面下のタスクバーやスナップ表示部分を無視して、ウィンドウが最大化されます。

Win8ストアアプリのテンプレート集のサイト

ストアアプリのデザイン・テンプレートが、↓のサイトに大量に載ってました。・50 design templates for Windows Store apps http://www.timmykokke.com/2013/02/50-design-templates-for-windows-store-apps/ ・60 Design Templates for Windows Store Apps …

XAMLで色相のグラデーションを描画

XAMLで色相のグラデーションのブラシを作ろうとしたのですが、 よくよく考えたら、XAMLのLinearGradientBrushなどは、RGB値で色の指定をするので、色相のグラデーションは作成できません。 (H:0,S:1,V:1)〜(H:360,S:1,V:1)までのグラデーション、とか定義で…

RGB⇔HSVの変換をするクラス

アプリを作ってて色を扱っていると、RGBではなくHSV表色系で色を扱いたいと思うときが多々あります。 WPFで使うColor構造体はRGBで色を扱うので、HSVで扱うHSVColor構造体を作り、 Color⇔HSVColor構造体を相互に変換できるようにしてみました。 変換の式はこ…

Win8環境での、WPFのToggleButton表示が直ってた

以前、Win8環境でWPFのトグルボタンのIsCheckedプロパティで表示が切り替わらない、という現象を見つけました。 詳細は以下の通り。 http://d.hatena.ne.jp/minami_SC/20130331/1364729351 で、気がついたら、この表示の不具合がいつの間にか直ってました。 …

KinectでカメラのRGBデータ取得

Kinectプログラミング、はじめの一歩として、RGBカメラの画像を表示してみました。

ModernUI for WPF用のテンプレートを追加する拡張機能

ModernUI for WPFでアプリを作る用のテンプレートを追加してくれる拡張機能が、 Visual Studio Galleryで公開されています。 ModernUI for WPF Templates http://visualstudiogallery.msdn.microsoft.com/7a4362a7-fe5d-4f9d-bc7b-0c0dc272fe31以下のページ…

ModernUI for WPFを使ってみた

WPFアプリを簡単にメトロデザインにできる、ModernUI for WPFというライブラリがあります。 これがすごい便利!! 手軽にZuneとかVS2012みたいな雰囲気にできます。 ModernUI for WPF http://mui.codeplex.com/

OxyPlotで画像のヒストグラム描画

OxyPlotで画像のヒストグラムのグラフを書いてみました。 画像の扱いには、以前取り上げたWriteableBitmapExを使っています。 http://d.hatena.ne.jp/minami_SC/20120927/1348698443

OxyPlotでグラフ描画

Codeplexを色々見ていたら、OxyPlotというグラフ描画ライブラリを見つけました。 これはなかなか便利そう。 http://oxyplot.codeplex.com/ちょこっとしか使ってないけど、備忘録としてメモしときます。