前提・実現したいこと
特にDialogが知りたいです
DisplayAlertの背景デフォルトの白色に別の色を付けたような物を作りたいです。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答1件
0
ベストアンサー
こんにちは。
最小のサンプルを作ってみました。
https://github.com/muak/DialogsSample
1. Dialogの元となるViewを作る
xml
1<extra:DialogView 2 xmlns="http://xamarin.com/schemas/2014/forms" 3 xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 4 xmlns:extra="clr-namespace:AiForms.Dialogs.Abstractions;assembly=AiForms.Dialogs.Abstractions" 5 x:Class="DialogsSample.SampleDialog" 6 OverlayColor="#80000000" IsCanceledOnTouchOutside="True" 7 VerticalLayoutAlignment="Center" HorizontalLayoutAlignment="Center" 8 WidthRequest="250" BackgroundColor="AliceBlue" Padding="16" 9 > 10 11 <StackLayout> 12 <Label Text="{Binding Message}" HorizontalOptions="Center" /> 13 <Button Text="OK" Clicked="OK_Clicked" BackgroundColor="Transparent" /> 14 <Button Text="Cancel" Clicked="Cancel_Clicked" BackgroundColor="Transparent" /> 15 </StackLayout> 16 17</extra:DialogView> 18
OverlayColorが外側の背景色、IsCanceledOnTouchOutsideで外側タップで閉じる
VerticalLayoutAlignmentとHorizontalLayoutAlignmentで表示位置
あとはBackgroundでダイアログ背景色などを指定しています。
ここで自由にデザインできますので、好きなようにレイアウトします。
csharp
1public partial class SampleDialog : DialogView 2{ 3 public SampleDialog() 4 { 5 InitializeComponent(); 6 } 7 8 void OK_Clicked(System.Object sender, System.EventArgs e) 9 { 10 DialogNotifier.Complete(); 11 } 12 13 void Cancel_Clicked(System.Object sender, System.EventArgs e) 14 { 15 DialogNotifier.Cancel(); 16 } 17}
コードビハインドにOKとCancelの処理を書きます。DialogNotifierの各メソッドを実行することでDialogを終了できます。
2. それを呼び出す処理を書く。
csharp
1public partial class MainPage : ContentPage 2{ 3 public MainPage() 4 { 5 InitializeComponent(); 6 } 7 8 async void Button_Clicked(System.Object sender, System.EventArgs e) 9 { 10 if(await AiForms.Dialogs.Dialog.Instance.ShowAsync<SampleDialog>(new { Message = "Hello" })) 11 { 12 System.Diagnostics.Debug.WriteLine("OK Tapped"); 13 } 14 else 15 { 16 System.Diagnostics.Debug.WriteLine("Cancel Tapped"); 17 } 18 } 19}
ここで引数で渡したものがDialogのBindingContextとなり上のXamlでMessageとしてBindさせています。
ShowAsyncの結果はOKが押された時にture、Cancelの時にfalseとなります。
その他、細かいことはReadMeに記載していますので良かったら参考にしてください。
https://github.com/muak/AiForms.Dialogs/blob/master/README-ja.md
投稿2020/05/28 11:48
編集2020/05/28 11:50総合スコア208
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。