WPF」カテゴリーアーカイブ

WPF でコントロールをドラッグする

以前、WPF でコントロールのドラッグコードを書いたのですが、業務的に少し書き直してみます。WPFでコントロールをドラッグ(1) では、マウスの down/up/move のイベントを直接つけていますが、コントロールが増えたときには面倒ですね…というか、動的にイベントを追加すればよいのですが。ふと、[WPF]枠なしでリサイズ&ドラッグ移動可能なウィンドウを作る に行き当たると、WindowChrome クラス を使うと枠なしのウィンドウが作れて、MouseLeftButtonDown イベント内に DragMove イベントを呼び出せばよいようです。この方式だと簡単ですね。 というわけで、マウスダウンのイベントだけあらかじめ付けておいて、マウスの移動とアップイベントは動的に追加します。また、クラスの継承ではなくて拡張を使って実装します。 利用するときは、次のように sender … 続きを読む

カテゴリー: C#, WPF | コメントする

[WinRT] Kindle の購入リストを取得する

Kindle Launcher ネタの続きです。 どうせならば、購入済みの一覧を拾ってきて、それに対してセカンダリタイルを付けれたほうが便利ですよね。ということで、購入リストを Kindle Cloud Reader から取得します。 Kindle Cloud Reader 自体がブラウザなので、なんとかなるだろう、という予想のもとに進めて方針を立てます。 WebBrowser を使って Kindle Cloud Reader を表示する。 中身の DOM を拾って ASIN のリストを取得する。 な感じで ok でしょうってことで。 実際やってみると、いくつか難関があって、 WebBrowser で接続するときに User-Agent を偽装しないといけない。 WebBrowser 出 iframe 内ので HTML をどうやって取るのか? というところです。本来はWindows ストア … 続きを読む

カテゴリー: C#, WPF | コメントする

CakePHPのXMLレスポンスをListViewで一覧表示する

CakePHPのXMLレスポンスをストアアプリで一覧表示する | Moonmile Solutions Blog http://www.moonmile.net/blog/archives/5374 の ListView 版です。GridView の場合、横スクロールなのですが、ListView は縦スクロール。WPF の ListView と同じ感じ…では使えないので結構面倒です。なので、フォームにあるリストビューを作りたい場合は下手に自作するよりもコンポーネントを買ったほうがいいような気がするのですが。Windows UI http://jp.infragistics.com/products/windows-UI.aspx のグリッドコントロールじゃないですかね。 が、あえて自作します。 こんな風にフォームアプリのように縦スクロール。右側にそれぞれの値を表示という画面です … 続きを読む

カテゴリー: CakePHP, WPF, WinRT | コメントする

CakePHPのXMLレスポンスをストアアプリで一覧表示する

CakePHPのXMLレスポンスをWPFで一覧表示する | Moonmile Solutions Blog http://www.moonmile.net/blog/archives/5370 の Windows ストアアプリ版も作ってみます。 本当はListViewを使いたいところだけど、手始めに GridView を使うところから。もっと、WPFのListViewのようなダサいデザインを手軽に作れればいいのですが。どうもうまくいかない。 ■データモデルを作る WPFで作ったソースをそのまま流用しますが、一か所だけ違います。リフレクションでプロパティを取ってくるところで、拡張メソッドの GetTypeInfo を使います。なんで、こんな風にしたのか不明なのですが。 POJO なクラスはそのままで。 ■グリッドビューを作る VS2013 でグリッドのテンプレートを作ると、きれいな Grid … 続きを読む

カテゴリー: CakePHP, WPF, WinRT | コメントする

CakePHPのXMLレスポンスをWPFで一覧表示する

余裕があるうちにCakePHPとWPFの相互運用をまとめていく(準備編) | Moonmile Solutions Blog http://www.moonmile.net/blog/archives/5329 の続きで、今度はWPF側からのコーディングです。 いわゆる、以下な感じな、リストビューとプロパティを表示するマスター画面を想定します。 一覧ボタンを押すと、Web APIにつなげて一覧を取得。リストビューの各行をクリックすると右側のプロパティに詳細な値がぽちぽちと表示されるパターンです。このあたり、WPFなので、適当に Binding を使います。最終的には、Visual Studio のプロパティウィンドウのように自動化を目指したいところなのですが…まあ、業務的には各種のプロパティウィンドウをちまちま作っています。というのも、完全に自動化してしまうと使い勝手が悪いこと … 続きを読む

カテゴリー: CakePHP, WPF | コメントする

CakePHPのWeb APIレスポンスをJSON型式で返す

業務では使わなかったのですが、JSON型式で返す方法も紹介しておきます。 1. app/Config/routes.php を書き換える 先頭の行に以下を追加します。 以下のように並べると、xml と json の両方が使えます。 2. app/Controller/AppController.php を書き換える RequestHandler コンポーネントを有効にすること、ページングの数を多めにとっておきます。 3. XML 用の View を作成する Controller で set した値を json/*.ctp ファイルに書いていきます。作るファイルは XML と同じで、index.ctp, view.ctp, add.ctp, edit.ctp になります。json に変換する場合は、json_encode 関数です。 index.ctp は、配列にします。 view.ctp, … 続きを読む

カテゴリー: CakePHP, WPF | コメントする

CakePHPのWeb APIレスポンスをXML型式で返す

CakePHP の通常 View ができたので、XML を返す Web API用のビューを作ります。 [CakePHP] RESTを使ってViewをXML形式で返す | Moonmile Solutions Blog http://www.moonmile.net/blog/archives/4871 と基本は同じです。View の各フォルダに xml フォルダを作成して対応させます。いちいち同じファイルを作らないといけないのが面倒ですが、適当なスクリプトを作って自動化させておくとよいでしょう。 1.app/Config/routes.php を書き換える 先頭の行に以下を追加します。 2.app/Controller/AppController.php を書き換える RequestHandler コンポーネントを有効にすること、ページングの数を多めにとっておきます。 デフォルトでは 20 … 続きを読む

カテゴリー: CakePHP, WPF | コメントする

CakePHPとWPFの相互運用 cake bake を使って MVC を自動生成する

最初に CakePHP の cake bake all を使って Model/View/Controller を一気に作成したいところですが、既存のデータベースから移行する場合、CakePHP の複数形ってのにひっかかります。 データベース上に store というテーブルがあって、これに対応する MVC を作ろうとすると、こんな風に Model.php 内でエラーがでます。CakePHP のテーブル名のルールとして複数形にするわけで、本来ならば「stores」を探しているのですが、このテーブルがありません、ってな具合ですね。 Model 名は「Store」なんだから、なんとか store テーブルも見つけてくれれば便利じゃないかと思うんですが、これで結構悩みます。 で、テーブル名を変えられる、あるいは新しいシステムの場合はいいんですが、既存のシステムがあったり、それなりの命名規約があたりす … 続きを読む

カテゴリー: CakePHP, WPF | コメントする

余裕があるうちにCakePHPとWPFの相互運用をまとめていく(準備編)

去年末にリリースした、某予約システムですが、CakePHPとWPFの相互運用をしています。この発想は、手始めに Silverlight+WCFの組み合わせで実験 | Moonmile Solutions Blog からありました。サーバー側にLAMP環境を据えて、クライアントでWindowsを使うという仕組みですね。当時から、Web APIはあったのですが、結合の部分はWCFのほうがよいのではないか?と思ってWindows寄りに考えていました。最近は、ASP.NET MVC、Web APIの流れで、WCFを直接扱うよりもRESTfulで送ればよいという流れがあって、艦これ諜報員の場合も単純なJSONで戻してくるので「諜報」が楽ってのもあります。 仕事なので、サーバーに何を使うのかの選定から始めるわけですが、コストの問題やらサーバーのプログラマ調達の問題などがあって、 サーバーにLinux+ … 続きを読む

カテゴリー: CakePHP, WPF | コメントする

[WPF] 最初に開くXAMLを切り替える

備忘録的に、メモ。 WPFアプリで最初に開く画面は、App.xaml の StartupUri 属性にしてあるのですが、これをコンパイル時に切り替えます。たとえば、DEBUG 時に「MenuWindow.xaml」を開いて RELEASE時に「LoginWindow.xaml」を開くというパターンです。デバッグ時にはログイン画面が面倒だから、飛ばしてしまってメニュー画面を開きたいときに便利です。という自分。 OnStartup イベントをオーバーライドして、StartUri プロパティを書き換えます。この場合は、DEBUG 時には「MenuWindow.xaml」が使われて、RELEASE 時には App.xaml に指定されているページが開かれるというパターンです。 設定ファイルを読み込んで、トップ画面を開くときにも使えるかも。

カテゴリー: WPF | コメントする