国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

在 .NET MAUI 中如何更好地自定義控件

這篇具有很好參考價(jià)值的文章主要介紹了在 .NET MAUI 中如何更好地自定義控件。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

今天,我想談?wù)劜⑾蚰故驹?NET MAUI中完全自定義控件的方法。在查看.NET MAUI之前,讓我們回到幾年前,回到 Xamarin.Forms 時(shí)代。那時(shí),我們有很多自定義控件的方法, 比如當(dāng)您不需要訪問平臺(tái)特有的 API 來(lái)自定義控件時(shí),可以使用Behaviors;如果您需要訪問平臺(tái)特有的 API,可以使用 Effects。

讓我們稍微關(guān)注一下Effects API。它是由于 Xamarin 缺乏多目標(biāo)體系結(jié)構(gòu)而創(chuàng)建的。這意味著我們無(wú)法在共享級(jí)別(在 .NET 標(biāo)準(zhǔn)?csproj?中)訪問特定于平臺(tái)的代碼。它工作得很好,可以讓您免于創(chuàng)建自定義渲染器。

今天,在 .NET MAUI 中,我們可以利用多目標(biāo)架構(gòu)的強(qiáng)大功能,并在我們的共享項(xiàng)目中訪問特定于平臺(tái)的 API。那么我們還需要?Effects?嗎?不需要了,因?yàn)槲覀兛梢栽L問我們所需要的所有平臺(tái)的所有代碼和 API。

那么讓我們談?wù)勗?.NET MAUI 中自定義一個(gè)控件的所有可能性以及在此過(guò)程中您可以遇到的一些障礙。為此,我們將自定義?Image?控件,添加對(duì)呈現(xiàn)的圖像進(jìn)行著色的功能。

注意:如果您想使用?Effects?,.NET MAUI仍然支持,但不建議使用

源代碼參考來(lái)自 .NET MAUI Community Toolkit 的IconTintColor。

自定義現(xiàn)有控件?

要向現(xiàn)有控件添加額外的功能,需要我們對(duì)其進(jìn)行擴(kuò)展并添加所需的功能。

讓我們創(chuàng)建一個(gè)新控件,class ImageTintColor : Image?并添加一個(gè)新的


public class ImageTintColor : Image
{
    public static readonly BindableProperty TintColorProperty =
        BindableProperty.Create(nameof(TintColor), typeof(Color), typeof(ImageTintColor), propertyChanged: OnTintColorChanged);

    public Color? TintColor
    {
        get => (Color?)GetValue(TintColorProperty);
        set => SetValue(TintColorProperty, value);
    }

    static void OnTintColorChanged(BindableObject bindable, object oldValue, object newValue)
    {
        // ...
    }
}

熟悉 Xamarin.Forms 的人會(huì)認(rèn)識(shí)到這一點(diǎn);它與您將在 Xamarin.Forms 應(yīng)用程序中編寫的代碼幾乎相同。

.NET MAUI 平臺(tái)特定的 API 工作將在?OnTintColorChanged?委托上進(jìn)行。讓我們來(lái)看看。


public class ImageTintColor : Image
{
    public static readonly BindableProperty TintColorProperty =
        BindableProperty.Create(nameof(TintColor), typeof(Color), typeof(ImageTintColor), propertyChanged: OnTintColorChanged);

    public Color? TintColor
    {
        get => (Color?)GetValue(TintColorProperty);
        set => SetValue(TintColorProperty, value);
    }

    static void OnTintColorChanged(BindableObject bindable, object oldValue, object newValue)
    {
        var control = (ImageTintColor)bindable;
        var tintColor = control.TintColor;

        if (control.Handler is null || control.Handler.PlatformView is null)
        {
            // 執(zhí)行 Handler 且 PlatformView 為 null 時(shí)的解決方法
            control.HandlerChanged += OnHandlerChanged;
            return;
        }

        if (tintColor is not null)
        {
#if ANDROID
            // 注意 Android.Widget.ImageView 的使用,它是一個(gè) Android 特定的 API
            // 您可以在這里找到`ApplyColor`的Android實(shí)現(xiàn):https://github.com/pictos/MFCC/blob/1ef490e507385e050b0cfb6e4f5d68f0cb0b2f60/MFCC/TintColorExtension.android.cs#L9-L12
            ImageExtensions.ApplyColor((Android.Widget.ImageView)control.Handler.PlatformView, tintColor);
#elif IOS
            // 注意 UIKit.UIImage 的使用,它是一個(gè) iOS 特定的 API
            // 您可以在這里找到`ApplyColor`的iOS實(shí)現(xiàn):https://github.com/pictos/MFCC/blob/1ef490e507385e050b0cfb6e4f5d68f0cb0b2f60/MFCC/TintColorExtension.ios.cs#L7-L11
            ImageExtensions.ApplyColor((UIKit.UIImageView)control.Handler.PlatformView, tintColor);
#endif
        }
        else
        {
#if ANDROID
            // 注意 Android.Widget.ImageView 的使用,它是一個(gè) Android 特定的 API
            // 您可以在這里找到 `ClearColor` 的 Android 實(shí)現(xiàn):https://github.com/pictos/MFCC/blob/1ef490e507385e050b0cfb6e4f5d68f0cb0b2f60/MFCC/TintColorExtension.android.cs#L14-L17
            ImageExtensions.ClearColor((Android.Widget.ImageView)control.Handler.PlatformView);
#elif IOS
            // 注意 UIKit.UIImage 的使用,它是一個(gè) iOS 特定的 API
            // 您可以在這里找到`ClearColor`的iOS實(shí)現(xiàn):https://github.com/pictos/MFCC/blob/1ef490e507385e050b0cfb6e4f5d68f0cb0b2f60/MFCC/TintColorExtension.ios.cs#L13-L16
            ImageExtensions.ClearColor((UIKit.UIImageView)control.Handler.PlatformView);
#endif
        }

        void OnHandlerChanged(object s, EventArgs e)
        {
            OnTintColorChanged(control, oldValue, newValue);
            control.HandlerChanged -= OnHandlerChanged;
        }
    }
}

因?yàn)?.NET MAUI 使用多目標(biāo),我們可以訪問平臺(tái)的詳細(xì)信息并按照我們想要的方式自定義控件。ImageExtensions.ApplyColor?和?ImageExtensions.ClearColor?方法是添加或刪除圖像色調(diào)的輔助方法。

您可能會(huì)注意到?Handler?和?PlatformView?的 null 檢查。這可能是您在使用過(guò)程中遇到的第一個(gè)阻礙。在創(chuàng)建和實(shí)例化?Image?控件并調(diào)用?BindableProperty?的?PropertyChanged?委托時(shí),Handler?可以為?null。因此,如果不進(jìn)行 null 檢查,代碼將拋出?NullReferenceException。這聽起來(lái)像一個(gè)bug,但它實(shí)際上是一個(gè)特性!這使 .NET MAUI 工程團(tuán)隊(duì)能夠保持與 Xamarin.Forms 上的控件相同的生命周期,從而避免從 Forms 遷移到 .NET MAUI 的應(yīng)用程序的一些重大更改。

現(xiàn)在我們已經(jīng)完成了所有設(shè)置,可以在?ContentPage?中使用控件了。在下面的代碼片段中,您可以看到如何在 XAML 中使用它:

<ContentPage x:Class="MyMauiApp.ImageControl"             xmlns="http://schemas.microsoft.com/dotnet/2021/maui"             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"             xmlns:local="clr-namespace:MyMauiApp"             Title="ImageControl"             BackgroundColor="White">
            <local:ImageTintColor x:Name="ImageTintColorControl"                                  Source="shield.png"                                  TintColor="Orange" /></ContentPage>

使用附加屬性和 PropertyMapper?

自定義控件的另一種方法是使用?AttachedProperties,當(dāng)您不需要將其綁定到特定的自定義控件時(shí)是 使用BindableProperty。

下面是我們?nèi)绾螢?TintColor 創(chuàng)建一個(gè) AttachedProperty:


public static class TintColorMapper
{
    public static readonly BindableProperty TintColorProperty = BindableProperty.CreateAttached("TintColor", typeof(Color), typeof(Image), null);

    public static Color GetTintColor(BindableObject view) => (Color)view.GetValue(TintColorProperty);

    public static void SetTintColor(BindableObject view, Color? value) => view.SetValue(TintColorProperty, value);

    public static void ApplyTintColor()
    {
        // ...
    }
}

同樣,我們?cè)?Xamarin.Forms 上為?AttachedProperty?提供了樣板,但如您所見,我們沒有?PropertyChanged?委托。為了處理屬性更改,我們將使用?ImageHandler?中的?Mapper。您可以在任何級(jí)別添加 Mapper,因?yàn)槌蓡T是靜態(tài)的。我選擇在?TintColorMapper?類中執(zhí)行此操作,如下所示。

public static class TintColorMapper
{
     public static readonly BindableProperty TintColorProperty = BindableProperty.CreateAttached("TintColor", typeof(Color), typeof(Image), null);

    public static Color GetTintColor(BindableObject view) => (Color)view.GetValue(TintColorProperty);

    public static void SetTintColor(BindableObject view, Color? value) => view.SetValue(TintColorProperty, value);

    public static void ApplyTintColor()
    {
        ImageHandler.Mapper.Add("TintColor", (handler, view) =>
        {
            var tintColor = GetTintColor((Image)handler.VirtualView);

            if (tintColor is not null)
            {
#if ANDROID
                // 注意 Android.Widget.ImageView 的使用,它是一個(gè) Android 特定的 API
                // 您可以在這里找到`ApplyColor`的Android實(shí)現(xiàn):https://github.com/pictos/MFCC/blob/1ef490e507385e050b0cfb6e4f5d68f0cb0b2f60/MFCC/TintColorExtension.android.cs#L9-L12
                ImageExtensions.ApplyColor((Android.Widget.ImageView)control.Handler.PlatformView, tintColor);
#elif IOS
                // 注意 UIKit.UIImage 的使用,它是一個(gè) iOS 特定的 API
                // 您可以在這里找到`ApplyColor`的iOS實(shí)現(xiàn):https://github.com/pictos/MFCC/blob/1ef490e507385e050b0cfb6e4f5d68f0cb0b2f60/MFCC/TintColorExtension.ios.cs#L7-L11
                ImageExtensions.ApplyColor((UIKit.UIImageView)handler.PlatformView, tintColor);
#endif
            }
            else
            {
#if ANDROID
                // 注意 Android.Widget.ImageView 的使用,它是一個(gè) Android 特定的 API
                // 您可以在這里找到 `ClearColor` 的 Android 實(shí)現(xiàn):https://github.com/pictos/MFCC/blob/1ef490e507385e050b0cfb6e4f5d68f0cb0b2f60/MFCC/TintColorExtension.android.cs#L14-L17
                ImageExtensions.ClearColor((Android.Widget.ImageView)handler.PlatformView);
#elif IOS
                // 注意 UIKit.UIImage 的使用,它是一個(gè) iOS 特定的 API
                // 您可以在這里找到`ClearColor`的iOS實(shí)現(xiàn):https://github.com/pictos/MFCC/blob/1ef490e507385e050b0cfb6e4f5d68f0cb0b2f60/MFCC/TintColorExtension.ios.cs#L13-L16
                ImageExtensions.ClearColor((UIKit.UIImageView)handler.PlatformView);
#endif
            }
        });
    }
}

代碼與之前顯示的幾乎相同,只是使用了另一個(gè) API 實(shí)現(xiàn),在本例中是?AppendToMapping?方法。如果您不想要這種行為,可以改用?CommandMapper,它將在屬性更改或操作發(fā)生時(shí)觸發(fā)。

請(qǐng)注意,當(dāng)我們處理?Mapper?和?CommandMapper?時(shí),我們將為項(xiàng)目中使用該處理程序的所有控件添加此行為。在這種情況下,所有Image控件都會(huì)觸發(fā)此代碼。在某些情況下這可能并不是您想要的,如果您需要更具體的方法,?PlatformBehavior?方法將會(huì)非常適合。

現(xiàn)在我們已經(jīng)設(shè)置好了所有內(nèi)容,可以在頁(yè)面中使用控件了,在下面的代碼片段中,您可以看到如何在 XAML 中使用它。

<ContentPage x:Class="MyMauiApp.ImageControl"             xmlns="http://schemas.microsoft.com/dotnet/2021/maui"             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"             xmlns:local="clr-namespace:MyMauiApp"             Title="ImageControl"             BackgroundColor="White">
            <Image x:Name="Image"                   local:TintColorMapper.TintColor="Fuchsia"                   Source="shield.png" /></ContentPage>

使用平臺(tái)行為

PlatformBehavior?是在 .NET MAUI 上創(chuàng)建的新 API,它讓您在需要以安全的方式訪問平臺(tái)特有的 API 時(shí),可以更輕松地自定義控件(這是安全的因?yàn)樗_保?Handler?和?PlatformView?不為?null?)。它有兩種方法來(lái)重寫OnAttachedTo?和?OnDetachedFrom。此 API 用于替換 Xamarin.Forms 中的?Effect?API 并利用多目標(biāo)體系結(jié)構(gòu)。

在此示例中,我們將使用部分類來(lái)實(shí)現(xiàn)特定于平臺(tái)的 API:

//文件名 : ImageTintColorBehavior.cs

public partial class IconTintColorBehavior 
{
    public static readonly BindableProperty TintColorProperty =
        BindableProperty.Create(nameof(TintColor), typeof(Color), typeof(IconTintColorBehavior), propertyChanged: OnTintColorChanged);

    public Color? TintColor
    {
        get => (Color?)GetValue(TintColorProperty);
        set => SetValue(TintColorProperty, value);
    }
}

上面的代碼將被我們所針對(duì)的所有平臺(tái)編譯。

現(xiàn)在讓我們看看?Android?平臺(tái)的代碼:

//文件名: ImageTintColorBehavior.android.cs

public partial class IconTintColorBehavior : PlatformBehavior<Image, ImageView> 
// 注意 ImageView 的使用,它是 Android 特定的 API{
    protected override void OnAttachedTo(Image bindable, ImageView platformView) =>
        ImageExtensions.ApplyColor(bindable, platformView); 
// 您可以在這里找到`ApplyColor`的Android實(shí)現(xiàn):https://github.com/pictos/MFCC/blob/1ef490e507385e050b0cfb6e4f5d68f0cb0b2f60/MFCC/TintColorExtension.android.cs#L9-L12

    protected override void OnDetachedFrom(Image bindable, ImageView platformView) =>
        ImageExtensions.ClearColor(platformView); 
// 您可以在這里找到 `ClearColor` 的 Android 實(shí)現(xiàn):https://github.com/pictos/MFCC/blob/1ef490e507385e050b0cfb6e4f5d68f0cb0b2f60/MFCC/TintColorExtension.android.cs#L14-L17
}

這是?iOS?平臺(tái)的代碼:


//文件名: ImageTintColorBehavior.ios.cs

public partial class IconTintColorBehavior : PlatformBehavior<Image, UIImageView> 
// 注意 UIImageView 的使用,它是一個(gè) iOS 特定的 API
{
    protected override void OnAttachedTo(Image bindable, UIImageView platformView) => 
        ImageExtensions.ApplyColor(bindable, platformView); 
// 你可以在這里找到`ApplyColor`的iOS實(shí)現(xiàn):https://github.com/pictos/MFCC/blob/1ef490e507385e050b0cfb6e4f5d68f0cb0b2f60/MFCC/TintColorExtension.ios.cs#L7-L11

    protected override void OnDetachedFrom(Image bindable, UIImageView platformView) => 
        ImageExtensions.ClearColor(platformView); 
// 你可以在這里找到`ClearColor`的iOS實(shí)現(xiàn):https://github.com/pictos/MFCC/blob/1ef490e507385e050b0cfb6e4f5d68f0cb0b2f60/MFCC/TintColorExtension.ios.cs#L13-L16
}

正如您所看到的,我們不需要關(guān)心是否?Handler?為?null?,因?yàn)?PlatformBehavior<T, U>?會(huì)為我們處理。

我們可以指定此行為涵蓋的平臺(tái)特有的 API 的類型。如果您想為多個(gè)類型應(yīng)用控件,則無(wú)需指定平臺(tái)視圖的類型(例如,使用 PlatformBehavior<T> );您可能想在多個(gè)控件中應(yīng)用您的行為,在這種情況下,platformView 將是 Android 上的 PlatformBehavior<View> 和 iOS 上的 PlatformBehavior<UIView>。

而且用法更好,您只需要調(diào)用?Behavior?即可:

<ContentPage x:Class="MyMauiApp.ImageControl"             xmlns="http://schemas.microsoft.com/dotnet/2021/maui"             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"             xmlns:local="clr-namespace:MyMauiApp"             Title="ImageControl"             BackgroundColor="White">
            <Image x:Name="Image"                   Source="shield.png">                <Image.Behaviors>                    <local:IconTintColorBehavior TintColor="Fuchsia">                </Image.Behaviors>            </Image></ContentPage>

注意:當(dāng)?Handler?與?VirtualView?斷開連接時(shí),即觸發(fā)?Unloaded?事件時(shí),PlatformBehavior 將調(diào)用?OnDetachedFrom。Behavior?API 不會(huì)自動(dòng)調(diào)用?OndetachedFrom?方法,作為開發(fā)者需要自己處理。

總結(jié)

在這篇文章中,我們討論了自定義控件以及與平臺(tái)特有的 API 交互的各種方式。沒有正確或錯(cuò)誤的方法,所有這些都是有效的解決方案,您只需要看看哪種方法更適合您的情況。我想說(shuō)的是,在大多數(shù)情況下,您會(huì)想要使用?PlatformBehavior,因?yàn)樗荚谑褂枚嗄繕?biāo)方法并確保在控件不再使用時(shí)清理資源。要了解更多信息,請(qǐng)查看有關(guān)自定義控件的文檔。

關(guān)注微軟開發(fā)者M(jìn)SDN了解更多

點(diǎn)擊了解更多~文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-479862.html

到了這里,關(guān)于在 .NET MAUI 中如何更好地自定義控件的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Maui中基本控件目錄

    基本控件介紹 控件名 中文名稱 說(shuō)明 Button 按鈕 與WPF中的基礎(chǔ)用法無(wú)太大變化 CheckBox 單選框 與WPF中的基礎(chǔ)用法無(wú)太大變化 ListView 列表 類似WPF中列表控件“ListBox” ImageButton 圖片按鈕 WPF中沒有該控件,通常需要開發(fā)者手動(dòng)實(shí)現(xiàn),MAUI中已經(jīng)包含在基礎(chǔ)控件中。 Entry 輸入框 類似

    2024年02月07日
    瀏覽(11)
  • c#WPF 自定義UI控件學(xué)習(xí),vb.net界面UI美化

    c#WPF 自定義UI控件學(xué)習(xí),vb.net界面UI美化

    最近項(xiàng)目中運(yùn)用到了WPF處理三維軟件,在C/S結(jié)構(gòu)中WPF做UI還是有很多優(yōu)越性,簡(jiǎn)單的學(xué)了一點(diǎn)WPF知識(shí),成功的完成項(xiàng)目目標(biāo)。項(xiàng)目過(guò)度階段對(duì)于WPF的一些基本特點(diǎn)有了進(jìn)一步了解 。至此花費(fèi)一點(diǎn)時(shí)間研究研究WPF控件。 為以后的項(xiàng)目開發(fā)中提供一些可觀的資源也是不錯(cuò)的。 目

    2024年02月20日
    瀏覽(21)
  • [MAUI]在.NET MAUI中復(fù)刻蘋果Cover Flow

    [MAUI]在.NET MAUI中復(fù)刻蘋果Cover Flow

    @ 目錄 原理 3D旋轉(zhuǎn) 平行變換 創(chuàng)建3D變換控件 繪制封面圖片 應(yīng)用3D旋轉(zhuǎn) 應(yīng)用平行變換 繪制倒影 創(chuàng)建綁定屬性 創(chuàng)建綁定數(shù)據(jù) 創(chuàng)建布局 計(jì)算位置 計(jì)算3D旋轉(zhuǎn) 創(chuàng)建動(dòng)效 項(xiàng)目地址 Cover Flow是iTunes和Finder中的一個(gè)視圖選項(xiàng),允許用戶使用水平滾動(dòng)的圖像查看他們的音樂庫(kù)或文件。

    2024年02月05日
    瀏覽(16)
  • [MAUI]在.NET MAUI中實(shí)現(xiàn)可拖拽排序列表

    [MAUI]在.NET MAUI中實(shí)現(xiàn)可拖拽排序列表

    .NET MAUI 中提供了拖放(drag-drop)手勢(shì)識(shí)別器,允許用戶通過(guò)拖動(dòng)手勢(shì)來(lái)移動(dòng)控件。在這篇文章中,我們將學(xué)習(xí)如何使用拖放手勢(shì)識(shí)別器來(lái)實(shí)現(xiàn)可拖拽排序列表。在本例中,列表中顯示不同大小的磁貼(Tile)并且可以拖拽排序。 使用.NET MAU實(shí)現(xiàn)跨平臺(tái)支持,本項(xiàng)目可運(yùn)行于Andro

    2024年02月12日
    瀏覽(13)
  • .NET MAUI 性能提升

    .NET MAUI 性能提升

    .NET多平臺(tái)應(yīng)用程序UI (MAUI)將android、iOS、macOS和Windows API統(tǒng)一為一個(gè)API,這樣你就可以編寫一個(gè)應(yīng)用程序在許多平臺(tái)上本機(jī)運(yùn)行。我們專注于提高您的日常生產(chǎn)力以及您的應(yīng)用程序的性能。我們認(rèn)為,開發(fā)人員生產(chǎn)率的提高不應(yīng)該以應(yīng)用程序性能為代價(jià)。 應(yīng)用程序的大小也是如

    2024年02月07日
    瀏覽(21)
  • [MAUI]深入了解.NET MAUI Blazor與Vue的混合開發(fā)

    [MAUI]深入了解.NET MAUI Blazor與Vue的混合開發(fā)

    .NET MAUI結(jié)合Vue的混合開發(fā)可以使用更加熟悉的Vue的語(yǔ)法代替Blazor語(yǔ)法,你現(xiàn)有項(xiàng)目不必重寫。之前寫過(guò)一篇 [MAUI] 在.NET MAUI中結(jié)合Vue實(shí)現(xiàn)混合開發(fā) ,其中介紹了如何創(chuàng)建一個(gè)vue應(yīng)用并將其打包至MAUI項(xiàng)目,這種方式依賴vue-cli創(chuàng)建和打包靜態(tài)站點(diǎn),好處是可以使用Node.js 的構(gòu)建但

    2024年02月08日
    瀏覽(50)
  • 宣布 .NET MAUI 支持 .NET 7 Release Candidate 2

    宣布 .NET MAUI 支持 .NET 7 Release Candidate 2

    支持 .NET 7 Release Candidate 2的 .NET 多平臺(tái)應(yīng)用程序 UI (MAUI) 現(xiàn)在可在 Windows 和 Mac 上的 Visual Studio 17.4 Preview 4 中使用。RC2 的主要主題是質(zhì)量和對(duì)帶有 iOS 16 的 Xcode 14 的 .NET 支持。此版本包含在生產(chǎn)中使用的上線支持許可證。 在相關(guān)新聞中,還為 MSAL.NET 和 App Center(預(yù)覽版)提供

    2024年02月10日
    瀏覽(19)
  • .NET MAUI 安卓 UI 資源設(shè)置

    .NET MAUI 安卓 UI 資源設(shè)置

    本文主要介紹使用 MAUI 開發(fā)安卓應(yīng)用時(shí),如何更換和處理 UI 資源:應(yīng)用名稱,圖標(biāo),主題配色,狀態(tài)欄,閃屏。 平常比較喜歡看小說(shuō),但是不知道從何時(shí)起,已經(jīng)找不到一個(gè)純粹的本地小說(shuō)閱讀器了。也能理解,畢竟不能只靠愛心發(fā)電,在線資源也就算了,我本地的 TXT 你也

    2024年02月10日
    瀏覽(22)
  • 【C#/.NET】MAUI上的依賴注入

    【C#/.NET】MAUI上的依賴注入

    ? ????????在移動(dòng)應(yīng)用開發(fā)中,依賴注入是一項(xiàng)非常重要的技術(shù),它可以幫助我們簡(jiǎn)化代碼結(jié)構(gòu)、提高可維護(hù)性并增加測(cè)試覆蓋率。在最新的.NET跨平臺(tái)框架MAUI中,我們也可以利用依賴注入來(lái)構(gòu)建高效的應(yīng)用程序架構(gòu)。本文將詳細(xì)介紹在MAUI上如何使用依賴注入,旨在幫助

    2024年02月11日
    瀏覽(25)
  • Visual Studio 2022 正式支持 .NET MAUI 開發(fā)

    Visual Studio 2022 正式支持 .NET MAUI 開發(fā)

    我們很高興地宣布 Visual Studio 2022 正式支持 .NET MAUI 開發(fā)?,F(xiàn)在,您可以使用 .NET 更快地構(gòu)建跨平臺(tái)原生客戶端應(yīng)用程序,并將它們從單個(gè)代碼庫(kù)發(fā)布到 Android、iOS、macOS 和 Windows。 此版本還提供了 .NET MAUI SDK 的最新穩(wěn)定性改進(jìn),這是自 2022 年 5 月 正式發(fā)布(GA)發(fā)布以來(lái)的第

    2024年02月11日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包