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で公開しています

github.com

まだたいしたことはできないけど、最終的には設定した文を手動ツイートするプログラムになる予定だよ

 

VisualStudio2017すごい

VisualStudio2015だとビルドエラーでまくりでコンパイルできなかったXamarinプロジェクトが2017だとコンパイルできるようになった!

とりあえず練習用のソースコードを公開

今はまだ何もできないけど、そのうちボタン一発で「にゃーん」できるようにするよ

github.com

ReactivePropertyをModelで使ってみる

INotifyPropertyChangedをModelに実装するのがめんどいのでReactivePropertyを使ってみようとしたが、そのまま使うのよくないみたい。

einherjar1632.hatenablog.com

コンストラクタでImmediateScheduler.Instanceをスケジューラーに指定すればいいのかな?

UIスレッドではよろしくないみたいだけど、どのスレッドで使えばいいんだろう。

 

オレオレ証明書作成プログラム

オレオレ証明書GUIで簡単に作れるプログラムを紹介するよ

必要事項を入力してボタンを押せば証明書ができるよ

でも「管理者として実行」しないとうまくいかないよ

 

SelfCert: Create a Self-Signed Certificate Interactively (GUI) or Programmatically in .NET

にプロジェクトつきのEXEがあるよ

証明書発行ルーチンはDLLになっているので自作アプリに組み込めるかも

ライセンスは特に明記されてなかったけど「自由につかってね」的なことが書いてあったよ

経験値っぽいの

ゲームを作る際にいろいろと経験値っぽいのが必要になったのでスプレッドシート作ってみた

3つの係数をいじることによりそれに対応する0~100レベルの経験値が出せるよ

 

経験値っぽいの FLOOR(POW(係数1,現在のレベル+係数2)*係数3) - Google スプレッドシート

クリエイティブ・コモンズの罠

自作ゲームのためにせっせと素材を集めていたのですが、どうもクリエイティブ・コモンズは商用・加工OKでも、一つ一つ表記が必須なようで、数百の素材をすべて表示するのは現実的ではないため、仕方なく削除しました。(そもそも大本をメモしてなかったのが悪いんですが)

 

画質はテキトーでいいから無料で加工して使える料理写真はないかなあ

ドット絵風に加工してゲームで使うんだ

サイト名とトップのURLくらいなら素材元として表記するのにな個々の素材の表記が嫌なんであって、ここから素材をもらったよとまとめて表記するのはいいんだ