برنامه نویسی

NET MAUI Blazor – بهترین روش ها برای رابط کاربری دسکتاپ

.NET MAUI Blazor یک چارچوب متن باز است که به شما امکان می دهد برنامه های چند پلتفرمی را با اجزای رابط کاربری وب و کد C# ایجاد کنید. از BlazorWebView برای رندر کردن اجزای Razor در موبایل و دسکتاپ استفاده می کند. بنابراین، مانند آخرین مقاله که بیشتر برای تلفن همراه بود، این بار قصد دارم نکات مفیدی را برای رابط کاربری دسکتاپ به شما نشان دهم.

رفرش را با F5 کلید و زوم با چرخ ماوس

در شما MainPage.xaml استفاده کنید Loaded رویداد از ContentPage برچسب برای لغو BlazorWebViewتنظیمات پیش فرض مانند کد زیر:

   public MainPage()
    {
        InitializeComponent();
        Loaded += ContentPage_Loaded;
    }

    private async void ContentPage_Loaded(object sender, EventArgs e)
    {
#if WINDOWS && RELEASE
        var webView2 = (blazorWebView.Handler.PlatformView as Microsoft.UI.Xaml.Controls.WebView2);
        await webView2.EnsureCoreWebView2Async();

        var settings = webView2.CoreWebView2.Settings;
        settings.IsZoomControlEnabled = false;
        settings.AreBrowserAcceleratorKeysEnabled = false;
#endif
    }
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

منوی زمینه را غیرفعال کنید

به صورت پیش فرض Windows منوی زمینه غیرفعال است اما macOS نیست، بنابراین ما باید آن را با کمی جاوا اسکریپت در شما غیرفعال کنیم index.html فایل:

window.addEventListener('contextmenu', (event) => event.preventDefault());
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

رنگ های نوار عنوان ویندوز را تغییر دهید

در Platforms/Windows/App.xaml این خطوط را اضافه کنید و رنگ ها را به هر چیزی که می خواهید تغییر دهید.

<maui:MauiWinUIApplication
    x:Class="YouProject.Client.App.Platforms.Windows.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:maui="using:Microsoft.Maui">
    <maui:MauiWinUIApplication.Resources>
        <ResourceDictionary>
            <SolidColorBrush x:Key="WindowCaptionForeground">#512bdf</SolidColorBrush>
            <SolidColorBrush x:Key="WindowCaptionBackground">#ffffff</SolidColorBrush>
            <SolidColorBrush x:Key="WindowCaptionForegroundDisabled">#512bdf</SolidColorBrush>
            <SolidColorBrush x:Key="WindowCaptionBackgroundDisabled">#ffffff</SolidColorBrush>
        </ResourceDictionary>
    </maui:MauiWinUIApplication.Resources>
</maui:MauiWinUIApplication>
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

از اسناد مایکروسافت بیشتر بیاموزید.

ترفندهای رایج HTML/CSS

1. کشیدن تصاویر و انتخاب متون را غیرفعال کنید
خوب، حدس می‌زنم همه ما موافقیم که هر تصویری نباید قابل کشیدن باشد، همچنین هر متنی نباید انتخاب شود، بنابراین همه شما باید این موارد را اضافه کنید:

* {
     user-drag: none;
     user-select: none;
     -webkit-user-drag: none;
     -webkit-user-select: none;
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

2. چند نکته ابزار داشته باشید
نکات ابزار در توسعه برنامه های دسکتاپ را به خاطر دارید؟ شما می توانید آن را با title ویژگی بر روی هر HTML عنصر
مثلا:

<button @onclick="Close()" class="close-button" title="Close"></button>
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

3. مکان نما ماوس را تغییر دهید
برای عناصر و اجزای مختلف، مکان نما ماوس را می توان تغییر داد، در اینجا مثالی از استفاده از آن آورده شده است cursor ویژگی برای تغییر مکان نما به یک اشاره گر هنگام نگه داشتن ماوس روی a div با کلاس از item:

.item {
    cursor: pointer;
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

4. چند افکت فعال و شناور اضافه کنید
به طور پیش‌فرض در برخی از کنترل‌های Native، برخی افکت‌های شناور و فعال (کلیک) وجود دارد که رنگ را تغییر می‌دهند، بنابراین می‌توانیم این کار را در وب به این صورت انجام دهیم:

  .item {
       background-color: white;
    }

  .item:active {
       background-color: whitesmoke;
    }

  .item:hover {
       background-color: lightgray;
    }
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اندازه پنجره را دریافت کنید

گاهی اوقات برای انجام برخی محاسبات در کد سی شارپ نیاز به اندازه پنجره دارید تا بتوانید با جاوا اسکریپت این کار را انجام دهید:

در مؤلفه Razor خود این خطوط کد را اضافه کنید

public partial class YourComponent : ComponentBase
{
    public int WindowWidth { get; set; }
    private string _resizeEventListenerId = string.Empty;
    private DotNetObjectReference<YourComponent>? _dotnetObjectReference;

    [Inject] private IJSRuntime JSRuntime { get; set; } = default!;

    protected override async Task OnInitializedAsync()
    {
        _dotnetObjectReference = DotNetObjectReference.Create(this);
        await base.OnInitializedAsync();
    }

    protected override async Task OnAfterRenderAsync(bool firstRender)
    {
        if (firstRender)
        {
            await JSRuntime.InvokeVoidAsync("UpdateWindowWidth", _dotnetObjectReference);
            await InitWindowWidthListener();
        }

        await base.OnAfterRenderAsync(firstRender);
    }

    [JSInvokable]
    public void UpdateWindowWidth(int windowWidth)
    {
        WindowWidth = windowWidth;
        StateHasChanged();
    }

    private async Task InitWindowWidthListener()
    {
        _resizeEventListenerId = Guid.NewGuid().ToString();
        await JSRuntime.InvokeVoidAsync("AddWindowWidthListener", _dotnetObjectReference, _resizeEventListenerId);
    }
}


وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

و اینها را در یک فایل جاوا اسکریپت قرار داده و در فایل خود اضافه کنید index.html

let windowEventListeners = {};

function AddWindowWidthListener(objReference, id) {
    let eventListener = () => UpdateWindowWidth(objReference);
    window.addEventListener("resize", eventListener);
    windowEventListeners[id] = eventListener;
}

function RemoveWindowWidthListener(id) {
    window.removeEventListener("resize", windowEventListeners[id]);
    delete windowEventListeners[id];
}

function UpdateWindowWidth(objReference) {
    objReference.invokeMethodAsync("UpdateWindowWidth", window.innerWidth);
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید


خوب، حدس می‌زنم بهتر باشد که بهترین روش‌های موبایل و دسک‌تاپ را در یک پروژه داشته باشیم، بنابراین مخزن نمونه حاوی تمام کدهایی را که بحث کردیم به‌روزرسانی کردم. می توانید آن را از اینجا داشته باشید.

کد نویسی مبارک ;D

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

همچنین ببینید
بستن
دکمه بازگشت به بالا