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