SourceChord

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

WPFでホットキーの登録

WPFでホットキーの登録を行うサンプルを書いてみました。

Win32のRegisterHotKey/UnregisterHotKeyというAPIを呼び出すことで、ホットキーの登録/登録解除ができます。
このAPIでホットキーを登録しておくと、アプリがアクティブでないときでも有効なグローバルなホットキーとなります。

続きを読む

WPF用にNotifyIconクラスをラップしてみた

C#で常駐アプリなどを作り、タスクトレイにアイコンを出す場合には、Win Formsで用意されているNotifyIconというクラスを使います。

以前、このクラスを使って常駐アプリを作る方法を↓に書きました。

この方法だと、使うたびにWinFormsのデザイナを利用して設定したりする必要があり面倒です。
ということで、NotifyIconに関する処理を1ファイルにまとめ、簡単に再利用できるようにしてみました。

今回は、以前のサンプルと比べ、以下のような点を修正してます。

  • Formsのコンポーネントクラスではなく、NotifyIconExという普通のクラスとして実装
    • Win Formsのデザイナをわざわざ使いたくなかったので、すべてC#のコードで書くように修正しました。
    • タスクトレイ関係の処理はすべてこのクラスの中に閉じ込めました。
  • メニューを、WPFのContextMenuクラスで作れるように修正
  • バルーン表示に関わる各種プロパティ/メソッドを利用できるようにラップ
  • 各種イベント類もラップ

コード一式は以下のリポジトリに上げています。
WPFSamples/NotifyIconSample at master · sourcechord/WPFSamples · GitHub

続きを読む

WPF/UWP向けに、グリッドレイアウト補助ライブラリを作ってみました~GridExtra~

この記事はXAMLアドベントカレンダー 2016 18日目の記事です。

WPF/UWP向けに、グリッドレイアウトに役立つクラス類を提供するライブラリを作りました。

今のところ、この二つのクラスだけですが、今後少しずつ色々なパネルを追加していきたいと思っています。

  • ResponsiveGrid
  • GridEx
    • Gridの行/列定義を簡単にするための各種添付プロパティ類

目次

  • 準備
  • 使い方
    • ResponsiveGrid
    • GridEx
      • 行×列の定義
      • グリッドの子要素の位置定義
      • ASCIIアート風のグリッド定義
続きを読む

.Net 4.6.2以降でのWPFのPer-Monitor DPI対応

この記事はXAMLアドベントカレンダー 2016 14日目の記事です。

WPFでは、ボタンをはじめとする各種UI要素はベクターベースでの描画を行っています。
そのため、WinFormsやMFCなどのGDI系のUIフレームワークと違い、High-DPIな環境でもボケずにキレイな描画ができる、、、と言われていました。

続きを読む

.Net 4.6.2でのWPFのソフトキーボード対応の改善

この記事はXAMLアドベントカレンダー 2016 4日目の記事です。

今まで、WPFのTextBoxはタップしても、ソフトキーボードが表示されませんでした。

ですが、.Net4.6.2でソフトキーボードのサポートが強化され、テキストボックスタップ時に自動でソフトキーボードが出現したり、フォーカスが外れたらソフトキーボードが非表示になったりするようになりました。

続きを読む

Visual StudioのXAMLエディタの地味に便利な機能

この記事はXAMLアドベントカレンダー 2016 3日目の記事です。

この記事では、Visual StudioXAMLエディタの機能で、そこそこ便利なんだけど、あまり知られて無さそうなものをいくつか紹介したいと思います。

VS2015に搭載されている機能を紹介しているので、以前のバージョンのVSでは使用できないものもちらほらありますのでご注意を。

続きを読む