最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Xamarin渲染器移植到.NET?MAUI項目中

 更新時間:2022年02月15日 11:29:29   作者:痕跡g  
這篇文章介紹了Xamarin渲染器移植到.NET?MAUI項目中的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

簡介

眾所周知, .NET MAUI使用的是Handler處理程序, 而Xamarin使用的則是Render渲染器模式。盡管MAUI中使用了新的渲染模式, 但是仍然Xamarin中的支持Render渲染器, 這意味著如果你的項目是從Xamarin移植到MAUI當(dāng)中, 大部分代碼能夠可以重用, 本篇文章介紹如何將Xamarin 渲染器(Render)移植到.NET MAUI項目當(dāng)中。

先決條件

為了還原本次測試環(huán)境, 下面分別列舉了本次測試代碼移植的開發(fā)測試環(huán)境, 如下所示:

IDE: Visual Studio Community 2022 Preview (64 位) 17.0.0 Preview 7.0

操作系統(tǒng): Windows 11家庭版 已安裝Andoroid子系統(tǒng)(調(diào)試使用)

IDE:安裝Xamarin移動端開發(fā)環(huán)境及MAUI預(yù)覽版環(huán)境

創(chuàng)建Xamarin渲染器

  • 第一步: 首先創(chuàng)建一個Xamarin.Forms項目, 在Android項目中創(chuàng)建CustomRender文件夾, 并且創(chuàng)建自定義渲染器MyButtonRender, 如下所示:

說明: MyButtonRender類完整代碼如下所示:

using Android.Content; 
using App2.Droid.CustomRender; 
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;
using App2;

[assembly: ExportRenderer(typeof(MyButton), typeof(MyButtonRender))]
namespace App2.Droid.CustomRender
{
    public class MyButtonRender : ButtonRenderer
    {
        public MyButtonRender(Context context) : base(context)
        {
        }

        protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.Button> e)
        {
            base.OnElementChanged(e);
            if(Control!= null)
            {
                Control.SetBackgroundColor(global::Android.Graphics.Color.Red);
            }
        }
    }
}
  • 第二步:在類庫項目App2中添加MyButton類,繼承Button, 如下所示:
using Xamarin.Forms;

namespace App2
{
    public class MyButton : Button
    {

    }
}
  • 第三步:在Xaml中使用MyButton, 如下所示:
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="App2.Views.AboutPage"
             xmlns:my="clr-namespace:App2" >
   <Grid>
    
    <!--此處略過許多代碼-->

    <my:MyButton Text="About!" />
  </Grid>
</ContentPage>
  • 第四步:啟動Android項目,預(yù)覽效果,如下所示:

說明:通過上面幾步, 我們輕松的完成了在Xamarin當(dāng)中自定義渲染器并且顯示在模擬器當(dāng)中, 接下來, 主要的任務(wù)是將Xamarin現(xiàn)有的
自定義渲染器移植到MAUI項目中, 那么下面接著繼續(xù)表演。

渲染器移植至MAUI項目

  • 第一步: 這里, 直接創(chuàng)建名為MAUIRender的新MAUI項目。

  • 第二步: 然后, 我們把Xamarin中創(chuàng)建的MyButton與MyButtonRender直接復(fù)制到MAUI的項目中, 如下所示:

MyButtonRender類修改如下:

using App2;
using Android.Content; 
using Microsoft.Maui.Controls.Platform;
using Microsoft.Maui.Controls;
using Microsoft.Maui.Controls.Compatibility.Platform.Android.FastRenderers;

namespace MAUIRender
{
    public class MyButtonRender : ButtonRenderer
    {
        public MyButtonRender(Context context) : base(context)
        {
        }

        protected override void OnElementChanged(ElementChangedEventArgs<Button> e)
        {
            base.OnElementChanged(e);
            if(Control!= null)
                Control.SetBackgroundColor(global::Android.Graphics.Color.Red);
        }
    }
}

說明: 此處更新涉及更新命名空間引用

移除舊的Xamarin引用:
using Xamarin.Forms.Platform.Android;
using Xamarin.Forms;

添加新的MAUI引用:
using Microsoft.Maui.Controls;
using Microsoft.Maui.Controls.Platform;
using Microsoft.Maui.Controls.Compatibility.Platform.Android.AppCompat;

移除 [assembly: ExportRenderer(typeof(MyButton), typeof(MyButtonRender))] (原因下面說)

MyButton類修改如下:

using Microsoft.Maui.Controls;

namespace App2
{
    public class MyButton : Button
    {

    }
}

說明: using Xamarin.Forms; 更新為: using Microsoft.Maui.Controls;

  • 第三步: 依賴注入自定義的Render
    上面所講到移除 [assembly: ExportRenderer(typeof(MyButton), typeof(MyButtonRender))] 聲明,
    在Xamarin當(dāng)中, 渲染器強制聲明在Android項目中, 耦合性很強。這一點,在MAUI項目當(dāng)中, 則是通過Startup類中依賴注入的形式添加,通過擴展方法 ConfigureMauiHandlers 添加 AddCompatibilityRenderer,如下所示:
        public static MauiApp CreateMauiApp()
        {
            var builder = MauiApp.CreateBuilder();
            builder
                .UseMauiApp<App>()
                .ConfigureFonts(fonts =>
                {
                    fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
                })
                .ConfigureMauiHandlers(handler =>
                {
                #if ANDROID
                handler.AddCompatibilityRenderer(typeof(MyButton), typeof(MyButtonRender));
                #endif
                });

			return builder.Build();
		}

說明: 之所以使用ANDROID 條件, 取決于我們并為定義IOS平臺的自定義渲染器, 當(dāng)然我們可以這么做, 如果當(dāng)該渲染器僅僅為Android提供, 我們即可單獨設(shè)置。

  • 第四步: XAML頁面中添加MyButton命名空間, 聲明MyBuToon, 如下所示:
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="MAUIRender.MainPage"
             xmlns:my="clr-namespace:MAUIRender"
             BackgroundColor="{DynamicResource SecondaryColor}">
    <Grid>
        <my:MyButton Text="Hello,MyButton!!!"
                     HeightRequest="80"
                     WidthRequest="300"
                     HorizontalOptions="Center"
                     />
    </Grid>
</ContentPage>

最終運行效果圖,如下所示:

總結(jié)

這篇文章主要給大家介紹了如何將Xamarin Render移植到 .NET MAUI項目當(dāng)中, 當(dāng)然在新的MAUI當(dāng)中,

仍然建議大家使用新的Handler處理程序來實現(xiàn), 并且它提供了更好的性能以及靈活性。

下一篇, 主要給大家介紹, 如何在MAUI當(dāng)中使用新的Handler體系來實現(xiàn)自定義平臺控件。

到此這篇關(guān)于Xamarin渲染器移植到.NET MAUI項目中的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • .NET學(xué)習(xí)筆記之默認(rèn)依賴注入

    .NET學(xué)習(xí)筆記之默認(rèn)依賴注入

    這篇文章主要給大家介紹了關(guān)于.NET學(xué)習(xí)筆記之默認(rèn)依賴注入的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • 讓你的.NET程序兼容不同版本的Dll文件

    讓你的.NET程序兼容不同版本的Dll文件

    讓你的.NET程序兼容不同版本的Dll文件...
    2006-09-09
  • ASP.NET MVC 數(shù)據(jù)驗證及相關(guān)內(nèi)容

    ASP.NET MVC 數(shù)據(jù)驗證及相關(guān)內(nèi)容

    這篇文章主要介紹了ASP.NET MVC 數(shù)據(jù)驗證及相關(guān)內(nèi)容的相關(guān)資料,需要的朋友可以參考下
    2014-10-10
  • ASP.NET MVC格式化日期

    ASP.NET MVC格式化日期

    這篇文章介紹了ASP.NET MVC格式化日期的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • MVC+EasyUI+三層新聞網(wǎng)站建立 實現(xiàn)登錄功能(四)

    MVC+EasyUI+三層新聞網(wǎng)站建立 實現(xiàn)登錄功能(四)

    這篇文章主要為大家詳細(xì)介紹了MVC+EasyUI+三層新聞網(wǎng)站建立的第四篇,教大家實現(xiàn)登錄功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • ASP.NET Core中如何實現(xiàn)重定向詳解

    ASP.NET Core中如何實現(xiàn)重定向詳解

    這篇文章主要給大家介紹了關(guān)于ASP.NET Core中如何實現(xiàn)重定向的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • asp.net簡單生成XML文件的方法

    asp.net簡單生成XML文件的方法

    這篇文章主要介紹了asp.net簡單生成XML文件的方法,結(jié)合實例形式分析了2種生成XML文件的技巧,需要的朋友可以參考下
    2016-04-04
  • 將datagrid控件內(nèi)容輸出到excel文件

    將datagrid控件內(nèi)容輸出到excel文件

    一個將datagrid控件內(nèi)容輸出到excel文件的demo,感興趣的朋友可以了解下或許對你學(xué)習(xí)datagrid控件相關(guān)有所幫助
    2006-09-09
  • ASP.NET怎么操作DataTable實例應(yīng)用

    ASP.NET怎么操作DataTable實例應(yīng)用

    有機會在博客園的博問頻道上看到一個問題,《ASP.NET怎么操作DataTable》;需要的朋友可以參考下
    2012-11-11
  • C# 通用文件上傳類

    C# 通用文件上傳類

    C# 通用上傳文件類,需要的朋友可以參考下。
    2009-12-12

最新評論

卢氏县| 新蔡县| 江陵县| 潍坊市| 扶绥县| 康定县| 马关县| 普定县| 庆元县| 吕梁市| 彰化县| 皮山县| 定州市| 汶上县| 鄂托克前旗| 天峻县| 监利县| 平昌县| 勐海县| 女性| 内乡县| 玉门市| 辛集市| 临泉县| 泰和县| 涞源县| 大丰市| 阿克苏市| 肥东县| 辽宁省| 牡丹江市| 浠水县| 体育| 延川县| 麻江县| 象州县| 大同市| 怀来县| 岳池县| 饶河县| 武宣县|