MVVMCross,Xamarin.iOSのBindingするプロパティの指定方法

MVVM CrossのStarter kitをインストールしたときやたいていの解説サイト、サンプルコードではXamarin.iOSのバインドコードはこのように記述されています。 コードを普通に読んでみるとLabelとVMのHelloプロパティをバインドさせてることはわかるのですがLabelはUIコントロールなので何かしらのプロパティとバインドさせなければいけません。 この場合バインドしたいものはおそらくTextプロパティなのですが、じゃあどこで指定するのかとなったときに???となってしばらく悩んでました。 すると優しき先人の方(@ticktackmobile)曰く、デフォルトでバインドするプロパティがあるとのこと。そしてLabelのデフォルトバインドプロパティはTextだからバインドできているらしい。   @garicchi MVVM CrossにはデフォルトのBinding対象プロパティを設定する仕組みがあって、主要なViewにはライブラリがよしなに設定済みだったはずです。 — ざまりん.ふぉーむずマン? (@ticktackmobile) 2016年10月22日 なるほどという感じで公式サイトを見てみるとちっちゃく記述されてました。 bind the TipLabel‘s default binding property – which happens to be a property called Text    https://mvvmcross.com/docs/a-xamarinios-ui-project ここで気になってくるのはText以外のプロパティを指定したいときですが、そちらについてもご回答いただけました。圧倒的感謝!! @garicchi .For()で指定できます。 set.Bind(label).For(l => l.Text).To(vm => vm.Hello) // 名前でも指定できたはず set.Bind(label).For(“Text”).To(vm => vm.Hello) — ざまりん.ふぉーむずマン? (@ticktackmobile) 2016年10月22日 ということで以下のコードのLabelとTextFieldはどちらもTextプロパティをバインドしているとのこと。プロパティを自分で指定したいときはForを使いましょう。 var set = this.CreateBindingSet<FirstView, Core.ViewModels.FirstViewModel>();…

XamarinのSDKがアップデートできないとき

Xamarinのアップデートが降ってきたとき、タスクバーにアップデートあると通知アイコンがでるのですがそれをクリックしても何もおこらない状態に陥りました。 解決方法としてはVisualStudioのツール>オプション>Xamarin>Other の中にあるCheck Nowというリンクをクリックするとアップデートをすることができます。 iOSをビルドするときはMacの上の環境とバージョンを合わせなければなので大変ですね

JuliusでALSAまわりのエラーがでた

ALSA lib conf.c:3357:(snd_config_hooks_call) Cannot open shared library libasound_module_conf_pulse.so ALSA lib pcm.c:2266:(snd_pcm_open_noupdate) Unknown PCM default こういうエラーがでたときは sudo apt-get install libasound2-plugins:i386 これを入れる。   多分64bitOSの関係だと思う

javaFXでLocation is not set.がでたら

javaFXではUI記述としてfxmlで記述されたファイルをリソースとして読み込みますが リソースなのでパスを指定しなければいけません。リソースのパスを間違えると以下のようなエラーがでます。 Exception in thread “main” java.lang.RuntimeException: Exception in Application start method at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:917) at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$99(LauncherImpl.java:182) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.IllegalStateException: Location is not set. と言ってもリソースのoutputパスやリソースをどう出力するかはプロジェクトの設定に大きく依存します。 そこで下記のようなプログラムを実行するとパスがわかります。{Mainクラスの名前}は適切なものに置き換えてください URL url = getClass().getResource(“{Mainクラスの名前}.class”); System.out.println(url.toString()); こうして出力されたパスはMainクラスが出力された場所になります。 その出力パス上にfxmlファイルが適切に出力されているか、パスは大丈夫そうかを確認すると解決します。 ちなみに上記で出力されたパスからのfxmlファイルを相対パスで記述するとfxmlファイルを読み込むことができます。

WAVファイルを扱うときに出てくるFrameSizeとは何か

WAVファイルを扱っているときにたびたび、Frameという概念が出現します。 通常、Frameとは音響解析時に、解析の最小単位を表し、Frameをwindowsサイズシフトを繰り返しながら分析していきます。 しかしそれは解析時の話であって、解析も何もしていないWAVファイルに出現するFrameとはなにか、調べてみました。 実際に2チャンネル16bit PCMのWAVファイルをjavaで読み込んで、AudioFormatをデバッグ表示してみたのが以下の図になります。 FrameSizeは「4」と出ています。 FrameSizeの算出式は以下のようになっています。 FrameSize = (SampleSizeInBits+7)/8*Channel SampleSizeInBitsとは何ビットずつサンプリングしていくか、つまり16bitPCMの場合16という数字が入ります。 Channelはチャンネル数を表します。今回は2チャンネル録音なので2が入ります。   2チャンネル 16bit PCMの場合、16bitで表現した1サンプルのデータが時間軸(横向き)に並んでいきます。 FrameSizeというのはこの縦幅がどれぐらいのサイズあるかということをバイト単位で表したものとなります。 今回は16bitPCMなので2byte×2チャンネルなので4byteとなります。 なぜFrameSizeという概念が必要になるかというと、WAVファイルのデータを実際にbyte単位で読み込んで行く時、チャンネル関係なくすべて横並びにデータが並んでいきます。 この中で「何byteで1サンプルなのか」という情報(どこでデータを区切るべきか)がFrameSizeとなります。 今回の場合だと、4byteずつ区切っていけば2チャンネルの1サンプルを取ることができるというわけです。