Xamarinでツイートアプリつくるよ(2) ボタンにコマンドをバインディング
今回はメインのUIを作ってボタンクリックでコマンドを実行するよ
必要なライブラリReactivePropertyをインストールするために、PCLプロジェクトを.NET Standardに変更しておいてね
やり方はググれ。VisualStudio2015だとなぞのビルドエラーがたくさん出て、夜眠れなくて朝起きれないことになるのでVisualStudio2017を使おう
ダウンロードサイトはこちら
www.visualstudio.com
日本語サイトはわからなかったけど、このページからダウンロードできない英語力ではプログラムなんてできないのであきらめよう
NugetでReactivePropertyを検索してインストール
.Net Standardプロジェクトになっていればインストールできるはず
それらが終わったらクラスを追加していきます
まずは設定用のModel、MainSetting.csファイルを追加
中身は以下URL
NyanTweet/MainSetting.cs at 08034ba7a8a27b7dfe6fb5badea5f88fbded3b8b · reniris/NyanTweet · GitHub
プロパティ一つとデフォルトの文字列があるだけのクラスです
ViewModel、MainPageViewModel.csを追加
中身は以下
NyanTweet/MainPageViewModel.cs at 08034ba7a8a27b7dfe6fb5badea5f88fbded3b8b · reniris/NyanTweet · GitHub
UIにバインディングするプロパティとコマンドです
View、MainPage.xamlを追加
中身
NyanTweet/MainPage.xaml at 08034ba7a8a27b7dfe6fb5badea5f88fbded3b8b · reniris/NyanTweet · GitHub
メインのUIです
MainPage.xamlについて解説
8行目
<ContentPage.BindingContext> <vm:MainPageViewModel /> </ContentPage.BindingContext>
これでバインディングが可能になります。WPFでいうDataContextです。
13行目
<Button Text="{Binding TweetWord.Value}" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" FontSize="Large" Command="{Binding TweetCommand}" />
メインの大きいボタンです。
表示テキストにTweetWordプロパティ、コマンドにTweetCommandプロパティをバインドしています。TweetWord.ValueとなっているのはReactivePropertyを使っているからです。
他のコントロールについては変わりないので特に解説しません。
MainPageViewModel.csについて解説
92行目
this.TweetCommand.Subscribe(_ => this.Message.Value = this.TweetWord.Value);
これだけで大きいボタンを押すと、下のほうにメッセージを出すことができます。
Xamarinでツイートアプリつくるよ(1) まずは最初のPageを差し替える
Xamarinの練習のためにツイートプログラムを作るよ
まずはXmarinのプロジェクトを作る(ここはほかのサイトのほうが詳しい)
それから、View、ViewModel、Modelフォルダを作る
ViewにMainPage.xamlを作って
App.csのコンストラクタを以下のように変更
public App() { this.MainPage = new View.MainPage(); }
こうすると、最初に表示されるページがMainPage.xamlに差し替えられるよ
今回の記事で使っているソースコードはGitHubで公開しています
まだたいしたことはできないけど、最終的には設定した文を手動ツイートするプログラムになる予定だよ
VisualStudio2017すごい
ReactivePropertyをModelで使ってみる
INotifyPropertyChangedをModelに実装するのがめんどいのでReactivePropertyを使ってみようとしたが、そのまま使うのよくないみたい。
コンストラクタでImmediateScheduler.Instanceをスケジューラーに指定すればいいのかな?
UIスレッドではよろしくないみたいだけど、どのスレッドで使えばいいんだろう。
オレオレ証明書作成プログラム
必要事項を入力してボタンを押せば証明書ができるよ
でも「管理者として実行」しないとうまくいかないよ
SelfCert: Create a Self-Signed Certificate Interactively (GUI) or Programmatically in .NET
にプロジェクトつきのEXEがあるよ
証明書発行ルーチンはDLLになっているので自作アプリに組み込めるかも
ライセンスは特に明記されてなかったけど「自由につかってね」的なことが書いてあったよ
クリエイティブ・コモンズの罠
自作ゲームのためにせっせと素材を集めていたのですが、どうもクリエイティブ・コモンズは商用・加工OKでも、一つ一つ表記が必須なようで、数百の素材をすべて表示するのは現実的ではないため、仕方なく削除しました。(そもそも大本をメモしてなかったのが悪いんですが)
画質はテキトーでいいから無料で加工して使える料理写真はないかなあ
ドット絵風に加工してゲームで使うんだ
サイト名とトップのURLくらいなら素材元として表記するのにな個々の素材の表記が嫌なんであって、ここから素材をもらったよとまとめて表記するのはいいんだ