しっぽを追いかけて

ぐるぐるしながら考えています

Unity と猫の話題が中心   掲載内容は個人の私見であり、所属組織の見解ではありません

XAML

Xamarin で ItemsControl っぽいコントロールを作りたい(2)

前回 で ItemsControl っぽいものを作りましたが、さらに ItemsPanel を切り替えるようにしてみます 修正対象は上記の通り

Xamarin で ItemsControl っぽいコントロールを作りたい(1)

以前 プラットフォームごとに配色の異なるアナログ時計を表示するアプリを実装した際に ItemsControl 風の AbsoluteLayout を作りました これに少し手を入れてもうちょい ItemsControl に近いコントロールを Xamarin.Forms で作ってみたいと思います とはい…

Xamarin でタップするたびに外観を切り替えるコントロールを作る

前回 は GetureRecognizer と Setter を連携する Behavior を作ることで、タップに反応するコントロールを作りました 今回はさらに発展させて、タップのたびに外観が変わるような実装を試してみたいと思います 例によって修正箇所は上記のみ

Xamarin で Gesture と Trigger の連携を XAML で記述したい

前回 は Behavior を利用して GestureRecognizer を契機に BackgroundColor を反転させるコントロールを作りました 今回はもう少し発展させて、GestureRecognizer を契機に TriggerAction の Setter を実行するような XAML を書いてみたいと思います 修正す…

Xamarin でコードビハインド、ViewModel を使わずに GestureRecognizer に反応させたい

Xamarin.Forms のコントロールは Tapped イベントすら持ってないので、Trigger でインタラクションを記述することがまだ難しいです; なので Tapped のジェスチャに反応する機能を拡張する GestureRecognizer を利用してコントロールを作ってみたいと思いま…

Xamarin.Forms で Trigger に反応するコントロールを作りたい

せっかく Xamarin.Forms 1.3.0 から Styles と Triggers が追加されたので、どこまでできるかカスタムコントロールを作ろうと思います! まずは初歩的なところからタップに反応して外観が変化するコントロールに挑戦

続・Xamarin でプラットフォームごとに別ファイルでリソースを XAML 定義したい

前回の投稿 ではプラットフォームごとに別 XAML ファイルでリソースを定義してみましたが、まだ生ぬるい! 共通コードの中でプラットフォームの分岐処理が含まれてしまっていたのでこれを排除しようと思います 今回改修するクラスは上記の青網掛けの部分

Xamarin × ResourceDictionary でプラットフォームごとに配色を変えたい

インフルエンザにかかってしまいまだ体調が本調子ではないですが、タイトルの通り DI コンテナではなく今度は ResourceDictionary で配色を切り替えてみたいと思います

Unity のプロパティ注入だけでプラットフォームごとに Xamarin アプリの配色を切り替える

Xamarin でプラットフォームごとに配色を切り替える場合、一般には下記のような XAML を記述すると思います <OnPlatform x:Key="SecondHandColor" x:TypeArguments="Color" iOS="Red" Android="Aqua" WinPhone="#80FF80" /> ただ、こうしてしまうと共通コードに各プラットフォームごとの分岐処理を記述するのと同様なので、後で特定のプラットフォームだけの修正をしよう</onplatform>…

Xamarin.iOS の Anchor プロパティが正しく解釈されない件

すでにわんくまとか Qiita で公開しちゃってるのでバレバレですが、Xamarin の BoxView のアナログ時計サンプル を XAML × MVVM に移植しようとしてハマったのが、Xamarin.iOS だけ AnchorX や AnchorY が正しく解釈されない問題です;

Xamarin で ViewModel から画面状態の変化を検知する

本来なら MVPVM で Presenter から View のイベントハンドラを設定したいところですが、あえて MVVM で、ViewModel から検知したいと思います 本家 XAML であればきっと EventToCommand みたいな Behavior を利用して検知するんでしょうが、今回は別の方法で…

Xamarin で ItemsControl 風 AbsoluteLayout

Xamarin には ViewModel のリストを UI に表示するコントロールは ListView と TableView しか用意されてません 本家 XAML では Canvas 内に ItemsControl を配置して ViewModel の内容に応じて任意の絶対座標に UI を表示するといったことが簡単にできるの…

Xamarin.Forms の Image に string の画像ファイルのローカルパスをデータバインディングする

WIndows ストアアプリなどの XAML では、下記のような感じで Image コントロールに対して直接画像ファイルのローカルパスをデータバインディングすることができます <Image Source="{Binding ImageUri}"/> この場合の ImageUri は次のような string による指定でも大丈夫です public class TopPag</image>…

Xamarin.Forms で Prism 風のパラメータつき画面遷移をつくる

Xamarin.Forms の画面遷移は NavigationPage による構築が基本らしく、NavigationPage.SetHasNavigationBar のメソッドでナビバーの表示有無を制御できるようです なので、NavigationPage を利用して Xamarin で Prism 風のパラメータつき画面遷移を行う実装…

Xamarin.Forms の画面遷移は NavigationPage 必須?!

とりあえず MVVM 基盤が整ってきたので次は画面遷移を何とかしたい できる限り Xamarin.Forms でがんばりたいので、Xamarin.Forms の Navigation について調べてみると VisualElement.Navigation というプロパティが用意されていました Push や Pop などのメ…

Xamarin で Prism と UnityContainer を使ってみる

少し前の投稿 で DI コンテナ *1 である Unity のプレリリース版が Xamarin 対応していることをご紹介しました(ゲーム開発の方じゃないです;) Prism との相性もよいので今度はこの Unity を Xamarin で使ってみようと思います *1:Dependecy Injection Con…

Xamarin.iOS で ViewModelLocator を使ってみる

前回 作成した Xamarin.Forms 用 ViewModelLocator をさっそく使ってみます

Xamarin で iOS と Windows Phone 8 用 BottomBar を作る

Windows ランタイムアプリにおける BottomAppBar くらいなら Xamarin.Forms に用意されているのではと探してみましたが、やはりない! Android はライセンスを持ってないのでできませんが、Xamarin で iOS と Windows Phone 8.0 で BottomBar というカスタム…

Xamarin.Forms の Grid のレイアウト仕様が独特

Xamarin.Forms で下記のような Grid を組んでみました

Xamarin.Forms の View にバインド可能プロパティを追加する

少し前に Xamarin.Forms でもユーザーコントロール的な View が作成できることがわかったので、今度はこうしたカスタム View に BindableProperty を追加してみようと思います 本家 XAML の依存関係プロパティのようなものみたいですね まずは ContentView …

Xamarin.Forms の画面で iOS アプリだけステータスバーの余白を確保するには

Xamarin.Forms の XAML で次のような ContentPage を記述したら・・・

Xamarin.Forms でユーザーコントロール的な View を作る

前回で Shared プロジェクトだとアセンブリ構成が微妙になるので PCL プロジェクトで作り直し Xamarin.Forms のサンプルだと Page の XAML しかないですが、もしかしたらユーザーコントロール的な View が作れるのかもしれないので、試してみました

Xamarin の Shared プロジェクトの弊害

Xamarin.Forms の Shared プロジェクトで Page に カスタム View を配置するため、下記のような XAML を記述したらエラー!

スワイプで数値の増減ができる UI

円弧シェイプを利用した数値の表現 - しっぽを追いかけて では Button で増減させていましたが、タッチ操作しやすくさせるためスワイプで増減できるようにしてみます!

円弧シェイプを利用した数値の表現

意外と用意されていない始点と終点角度を指定できる円弧 - しっぽを追いかけて で作った円弧シェイプを使って数字と円弧を合わせて表示するチャート?を作ってみました

意外と用意されていない始点と終点角度を指定できる円弧

WPF を含め XAML には XY 座標系で始点終点を指定して描く円弧の Path はありますが、始点終点を角度で指定する円弧がありません・・・ ないものは・・・作ってみました!

さらに UI の仮想化(2)

UI に表示されるデータの仮想化(2) - しっぽを追いかけて では段階的な仮想化を行いましたが、まだまだ UX を向上させるためにできることがあります! それは ISupportIncrementalLoading の段階的なデータ読み込みに時間がかかる場合、スクロールに時間…

UI に表示されるデータの仮想化(1)

ピクセル単位で仮想化するパネル ItemsWrapGrid & ItemsStackPanel - しっぽを追いかけて では UI の仮想化についてご紹介しましたが、UI 以前にそもそもアイテムのデータ量が多い場合は表示が遅れたり、メモリを大量に消費してしまうといった問題が起こりま…

ピクセル単位で仮想化するパネル ItemsWrapGrid & ItemsStackPanel

Windows ランタイムアプリの特定のパネルには、画面に表示されている領域だけ UI 項目を生成したり使いまわしたりして、使用メモリの削減やスクロール動作を高速化する「仮想化」という仕組みが用意されています

GridView の 表示領域をすき間なく詰めるには

GridView を下記のようにシンプルに記述した場合 <GridView Grid.RowSpan="2" ItemsSource="{Binding Source={StaticResource itemsViewSource}}" Padding="116,186,116,0"> <GridView.ItemsPanel> <ItemsPanelTemplate> <ItemsWrapGrid ItemHeight="250" ItemWidth="300" /> </ItemsPanelTemplate> </GridView.ItemsPanel> </gridview>