toast 
何かやると、画面の下の方に「ピローン」と出てくるお知らせtoastと言うそうで
しらべてみたら、あっさり出来たので採用することにしました
というか
マイクロソフトのサイトを見てください
で終わってしまうレベル
NuGetでCommunityToolkitをゲット
ブートストラップ修正 
まあ起動時におまじないを入れるだけですが
プロジェクト内の「MauiProgram.cs」の先頭に
using CommunityToolkit.Maui;
を追加
更に、ブートストラップに .UseMauiCommunityToolkit()を追加する
下のような感じ
   public static MauiApp CreateMauiApp()
    {
        var builder = MauiApp.CreateBuilder();
        builder.UseMauiApp<App>().ConfigureFonts(fonts =>
        {
            fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
            fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
        }).UseMauiCommunityToolkit();
        //builder
        //  .UseMauiApp<App>()
        //  .ConfigureFonts(fonts =>
        //  {
        //      fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
        //      fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
        //  });
#if DEBUG
        builder.Logging.AddDebug();
#endif
        return builder.Build();
    }
これでtoolkitが使えるようになった
クリックで表示してみる
ボタンのクリック内で使いたければクリック内にこんなコードを書く
クリックイベントにasyncを付けなければ・・・ってVisual Studioならtoast.showにawaitを入れたときにお世話してくれるからあんまり気にしないで大丈夫
private async void OnClicked(object sender, EventArgs e)
{
    CancellationTokenSource cancellation=new CancellationTokenSource(); // キャンセルオプション
    string txt = "トースト";                                            // 表示したい文字列
    ToastDuration dur = ToastDuration.Short;                            // どんなふうに表示したいか(この場合は短めに)
    double fontsize = 14;                                               // フォントサイズ
    var toast = Toast.Make(txt,dur, fontsize);                          // toastオブジェクト作成        
    await toast.Show(cancellation.Token);                               // 作成したtoast表示
}
先頭にはAndroidの例を出したけど、Windowsだとこんなのが出てくる
通知領域にもしっかり残ってる
でまあ、えるいーだーに組み込むとこれだけでは済まなかったりする
接続、切断の通知に使いたかったんだけど、イベントとして上がったメソッド内で実行すると普通に吹っ飛ぶのでメインフォームのスレッドで動作するようにディスパッチしてあげなければならない
えるいーだーに組み込む
と言ってもDispatcherにトースト表示用のメソッドを実行させてるだけなんだけど
        Dispatcher.Dispatch(() =>
            this.BleStatus.Text = "切断"); // 画面上部に切断表示
        Dispatcher.Dispatch(()=>
            toastPush("切断"));       // toastとして表示
        /// <summary>
        /// トースト表示
        /// </summary>
        /// <param name="txt"></param>
        static public async void toastPush(string txt)
        {
            CancellationTokenSource cancellation = new CancellationTokenSource();
            ToastDuration dur = ToastDuration.Long;
            double fontsize = 25;
            var toast = Toast.Make(txt, dur, fontsize);
            await toast.Show(cancellation.Token);
        }
お試しで組み込んだのでディスパッチを2個並べるという格好悪い書き方になってるけど
おしまい




コメント
コメントを投稿