2014-01-01から1年間の記事一覧
WinJS.Class.deriveを使って継承もできるんですね。 使い方は第一引数に継承、第二引数にコンストラクタ、第三引数にインスタンスメソッド、第四引数にスタティックメソッドになるみたいです。ということで、オブジェクト指向でイマイチイメージが使えないAn…
WinJSのWinJS.Class.mixを使うとオブジェクトを混ぜ合わせることができるようになります。 犬と人のキメラ 名前を持って自己紹介出来るオブジェクトと、わんわんと鳴く犬を作ってmixで混ぜ合わせます。 // 自己紹介できる人 var Person = { name: { get: fun…
以下の内容を試した感じです。 テンプレートを使ってデータをバインドする方法 (HTML) - Windows app development コレクションの基本的なバインド方法 WinJSでバインド可能なオブジェクトの定義はいろんな方法があるみたいで、上記のリンクではWinJS.Bindin…
WinJSには、クラスを定義するための関数があります。WinJS.Class.defineがそれです。 Personクラスの定義 WinJS.Class.define関数は、第一引数にコンストラクタを渡して、第二引数にインスタンスメソッドを渡して、第三引数にスタティックメソッドを渡します…
特に双方向バインドとかないんですね…。 単一方向のバインドと、コントロールのイベント拾ってバインドのソースに書き戻す。地道な作業です。フォームの入力項目の数が多いとだるい感じですね。 といってもポイントはあります。 WinJS.Binding.as WinJS.Bind…
追記 FirefoxだとinnerTextは動かないみたいなのでinnerHTMLを使うのがよさそうです。 データバインド WinJS引き続きやってます。次はデータバインディングです。 データバインディングには、WinJS.Binding.processAll(DOMの要素, データ)という形のメソッド…
Firefox OSのFx0買ったんですよ。 HTML5のアプリ作りたいじゃないですか。ということで、どうせならMSの作ってるWinJSで作りたいじゃないですか?(そうでもない?)ということで、WinJSをVisual Studioで始める方法を書いてみます。 プロジェクトの作成 と…
.NETのStream系に慣れてるせいか、とても癖があるように感じてしまうWinRTのStream。ちょっと使ってみたいと思います。 まず、ファイルにデータを書き込むところから。 ファイルに書き込む処理には便利な機能があって、書き込みをトランザクションとして扱っ…
最後までまとめてアップしました。ひと段落。 WPF4.5入門 追記 SlideShare が有料プランにならないと PDF をダウンロードできなくなったようなので、ダウンロードできない人は以下の GitHub のリポジトリに原本のワードファイルがあるので、そちらをダウンロ…
Windows Presentation Foundation 4.5入門は、ひとまず終了です。WPFの入門書が少ないというか絶無な日本で少しでも、これからWPFをやろうと思うひとの助けになれば幸いです。 この中で使用しているコードは一部をのぞき以下のGitHubで管理しています。 http…
前回のアプリケーションはシンプルすぎてModelがありませんでしたが、今度はシンプルな四則演算アプリケーションでModelまで含んだコード例を示したいと思います。MVVMの基本クラスは、Prism.Mvvmのクラスを使用します。 Modelの作成 Modelはなるべくプレー…
CSVを読み込むのにMicrosoft.VisualBasicを参照するのってなんかな…という人向けに。 CsvHelperというライブラリを見つけました。サイトはこちら。 JoshClose/CsvHelper · GitHub クラスにマップしてくれる(フィールド番号等を指定してとる方法もある)ので…
改行とかカンマとか入ってる本格的なCSVをパースしたいということで、以下のようなサンプルを用意しました。 データ的には以下のような感じです。 あいうえお,かきくけこ,さしすせそ "カンマ,入り","改行 入り",どうだろう 空の,,"セル""も""ある行" CSVを読…
WPFでは、強力なデータバインディングを活かした設計パターンとしてModel View ViewModelパターンというアプリケーションを設計するうえでの定石となる設計パターンがあります。Model View ViewModelパターンはMVVMパターンと略されます。MVVMパターンは、WP…
BehaviorやTriggerとActionを使用することで、簡単なロジックがRAD環境で構築できることがわかりました。ここでは、ありもののBehaviorを使うのではなく自作のBehaviorやTrigger/Actionを作成する方法について示します。Behaviorは、コードビハインドに何回…
WPFの標準部品ではないですが、Blend SDK for WPFに同梱されているBehaviorという部品があります。BlendはVisual Studioに同梱されているため、基本的に標準でついていると考えていいライブラリです。Behaviorは、TriggerとAction(WPFの同名の機能とは別物…
Seleniumを使ってWebサイトを操作してるのですが、オシャレなサイトのファイルアップロードでinputタグを隠ぺいしていて、ファイルダイアログをどうしても出さないとファイルをアップロード出来ない作りになっていました。 普通のinputタグについては、簡単…
IoTでデータ集めるときはWebAPIに直接叩き込むんじゃなくて、間にEventHubsを挟むとスケールしやすくていいぜHAHAHA。ということを聞いたのでぐぐってみたが、コード例があまりにも少ない…!! まぁ英語読めばいいんですが、TOEICの点数が確率論の世界の人に…
コードレシピにアップしました。 久々に書いてみてびっくりしたのは、コードのライセンスがApache2.0からMITがデフォルトになってたところですね。 As Isってことでよろしくお願いします。 WPFのDataGridの左上のボタンの色の変え方 in C#, XAML for Visual …
Windows 8.1へのリカバリディスクとかがあるから余裕だろうと思ってた時期もありました。 コマンドプロンプトで起動して、DISKPARTしてクリアしてからリカバリしないとダメでした。 詳しい手順は以下のサイトが参考になります。 How to downgrade from windo…
プロパティとかでさくっとはいかないものなんですね。 DataGridの左上のボタンは{ComponentResourceKey ResourceId=DataGridSelectAllButtonStyle, TypeInTargetAssembly={x:Type DataGrid}}なので、その名前のKeyを持ったButtonのStyleを定義してやればいけ…
アプリ作者特集ということで、滅多にアプリ作らない私ですが、某所で作ってるアプリについて話してきました。発表資料を公開します。 某rss収集アプリ from 一希 大田
先日DownloadできるようになったVisual Studio 2015 Previewですが、こいつのBlendがやばいです。どうやばいってVisual StudioのShellをベースにBlendが再構築されたみたいな感じになってます。具体的には以下のウィンドウが普通にある。 Solution Explorer …
MSCCでMSDN Subscription Ultimate民が量産されたところなので、Azure上に仮想マシン立ててスグにこわせる開発環境として使おうとしてる人もいると思います。 そこで、たまに表題の件でつまずくことがあります。 ログインのときに認証ではじかれた場合は以下…
WPFには、ICommandインターフェースというユーザーの操作を抽象化する仕組みがあります。ICommandインターフェースは、以下のように定義されています。 public interface ICommand { // コマンドを実行するかどうかに影響するような変更があった場合に発生し…
データバインディングでは、ここまで説明してきた単一項目のデータバインディングの他に、コレクションをバインディングすることができます。コレクションのデータバインディングは、IEnumerableを実装したコレクションなら、どれでも対象になります。その中…
WPF4.5入門で書き続けてるWordファイルをPDF化してSlideShareにアップしました。 前回アップしたときよりも80ページちょい増えています。 WPF4.5入門 残りあと少しの予定ですが、とりあえず今の進捗ということで。
ここらへん押さえておかないと大変ですよね。 Prism for Windows Runtimeのライフサイクル in C# for Visual Studio 2013
正直自分しか使ってないんじゃないかというReadOnlyReactiveCollectionのサンプルをのっけました。 ReactivePropertyのコレクション in C# for Visual Studio 2013
auto incrementに設定してるIDの値をとりたい!ってことは往々にしてありますよね。そういうときは、こんなSQL発行すればいいみたいです。 select last_insert_rowid()