ぴーさんログ

だいたいXamarin.Formsのブログ

C#

MAUI移行時のDependencyServiceの対処

Xamarin.FormsアプリをMAUIへ移行する際に遭遇した問題から一つ。 問題 DependencyService.Get<T>()でインタンスを取得できなくなる。 解決方法 型の登録方法を変更し、DependentyAttributeで自動登録する方法から、明示的な手動登録に変更する。 解説 MAUIへ移</t>…

csprojファイル内で使用されるMSBuildプロパティのデフォルト値を調べる

前置き .NET Coreと同じくらいの時期に登場したSDKスタイルと呼ばれるcsproj形式では、 明示的に記述しなくても多くのMSBuildプロパティに初期値が設定されるようになっています。 ここで Release ビルドの設定を少し変更した Release_Sandbox のようなビル…

【Xamarin.Forms向け】ItemsSource BindablePropertyを追加するコードスニペット

BindableなItemsコントロールを作るときにコピペしてね。(ItemsViewを自分のコントロールに置換しよう)

【Xamarin.Forms】RelativeLayoutとConstraintのちょっと深い話

最近こんな質問に回答してました。 teratail.com という訳で今回は、RelativeLayoutの子要素にConstraintを再セットすることについて少し掘り下げます。 C#でRelaytiveLayoutにレアイアウト制約付きで子要素追加する際のコードはこんな感じです。 var label …

【Xamarin.Forms 2.2.0(プレビュー)】CarouselView

Xamarin.Forms 2.2.0 から CarouselView クラスが追加されます。 CarouselView は従来の CarouselPage を置き換える物で、CarouselPageは将来的に非推奨となります。 サンプル 基本的な使い方は ListView に似ています。しかし、DataTemplateの中身を Cellで…

【Xamarin.Forms】Effectsを使ったトリック 1

Xamarin.Forms 2.1.0 がリリースされたのでEffectを利用したトリックを解説します。 今回は Xamarin.Forms.Maps.Map (にアタッチしたBehavior)に地図のタップイベントを生やすというものです。 同様のことがカスタムMapクラス&カスタムRendererで実現できま…

Xamarin.Forms.Mapsのバグを報告しようとしたら既にチケット上がってた

Xamarin.Forms.Maps.Mapのバグを発見しました。 AED検索アプリ作ってる途中で見つけた Xamarin.Forms.Maps のバグ、再現プロジェクト作って報告しようとしたら既に同様のチケットがあった。https://t.co/mYshXKozr4— たまにXamarin.Forms解説マン (@ticktack…

Xamarin.Formsで諦めたこと(全画面コンテンツとNavigationBar)

iOSの「マップ」のように、コンテンツを大きく見せるため、画面をタップするとナビゲーションバー(Xamarin.Formsではこの表記)が引っ込むアプリがありますね? 例(iOSの「マップ」アプリ) NavigationPage.SetHasNavigationBar() でナビゲーションバーの有無…

【Xamarin.Forms】RelativeLayoutで中央に配置する

RelativeLayout の子要素に XConstraint , YConstraint Attached Property をセットすることでレイアウト位置を調整できます。 これはXY座標、つまり左上原点の指定となるため中央に配置するには一手間必要です。(AbsoluteLayoutの場合はいい感じに中央配置…

Xamarin.FormsでTextBlockのような事をする

テキストの一部だけ色やフォントサイズを変えたい時、WPFならTextBlockを使いますね? Xamarin.Formsでは Label.FormattedText で実現できます。 サンプル XAMLで書くとこんな感じ <Label> <Label.FormattedText> <FormattedString> <Span Text="名前:" ForegroundColor="Gray"/> <Span Text="あべなな" FontSize="Large" ForegroundColor="Maroon"/> <Span Text=" さん"/> </span></span></span></formattedstring></label.formattedtext></label>

Effectを使ってAndroidのMapViewからボタンを消す

Xamarin.Forms.Maps.Map コントロールを使用する際に現在位置表示、ズーム機能をONにしていると、Android版では地図上にボタンが表示されます。(iOSでは表示されない) iOSと揃えたい、デザインが他と馴染まないので自前で用意したいという場合は邪魔になるの…

NControlを使った汎用的なアイコンボタンのサンプル

こんな感じになるやつ 元々の線や塗りの色を変更できてアイコンに使いやすい。 ソース

NControlでもSVG

以前、NGraphicsでSVGが読み込めるようになったとお伝えしました。 それに伴い、内部でNGraphicsを使っているNControlでもSVGを読み込み&描画できるようになった訳なんですが、何も考えないで使うとちょっと悲しい事になるので解説を。 まずは特に工夫せず…

【Xamarin.Forms 2.1.0(プレビュー)】Effects

Xamarin.Forms 2.1.0 で Effects という新しい概念が追加される予定です。 (個人的な感想として、BehaiviorsやStylesの概念をCutstomRendererに持ち込んだ物がEffectsと捉えるとしっくりきます。) 「Buttonコントロールに枠線を付けたい」といった場合、従来…

【Xamarin.Forms 2.1.0(プレビュー)】DataTemplateSelector

Xamarin.Forms 2.1.0 で DataTemplateSelector が追加される予定です。 DataTemplateSelector を簡単に説明すると 「条件に応じたDataTemplateを返すDataTemplate」 です。 サンプル サンプルとして、各セルのデータ型に合わせたテンプレートを返すDataTempl…

【Xamarin.Forms 2.1.0(プレビュー)】HasUnevenRows dynamic sizing support

ListView.HasUnevenRows = true の場合、Cellのサイズを動的に変更できるようになります。 Androidでは元々動的にサイズ変更されてましたが、今回の変更で Cell.ForceUpdateSize() を呼ぶとサイズが更新される仕様になります。 「プラットフォームによっては…

【Xamarin.Forms 2.1.0(プレビュー)】ControlTemplate

Xamarin.Forms 2.1.0 で ControlTemplate が追加される予定です。 Xamarin.Forms 2.1.0-pre2 Released - Xamarin Forums ControlTemplate は次のクラスで使用可能です。 ContentPage ContentView TemplatedPage TemplatedView TemplatedPage、TemplatedView …

INotifyPropertyChangedなViewModelをReactivePropertyに移行するとどう変わるか

C#

前回の記事でサンプル用に割とオーソドックスViewModelを作ったところ、ReactivePropertyに置き換えた場合と比較したら面白そうだと思ったので書いてみます。 目次 INotifyPropertyChangedインターフェースを実装しなくなる 変更通知プロパティのコードが短…

ちょっと未来のXamarin.Formsを試す(1.3.0 Technology Preview)

この記事は Xamarin Advent Calendar 2014 、兼 XAML Advent Calendar 2014 の9日目です。 この記事では Xamarin.Forms の時期バージョン(ver.1.3.0)で追加される機能の中から、 Styles、TriggersについてXAMLとC#のサンプル付きでご紹介します。また、アプ…

Xamarin.FormsのDependencyService.Get<T>()はSingletonなのか?

DependencyServiceとは DependencyServiceはXamarin 3.0で追加されたXamarin.Formsに含まれる、依存性注入のための仕組みです。ドキュメントはこちら。 Accessing Native Features via the DependencyService DependencyServiceの使い方 ドキュメントを要約…

UdpClientでICMPのPort Unreachableメッセージを無視する方法

単一のUdpClientインスタンスで非同期に受信待ちしながらデータを送信する、簡易チャット中継サーバのようなシステムを作りました。 すると、閉じたポートにパケットを送信した際にUdpClientがICMPのPort Unreachableメッセージを受け取って例外を吐いてしま…