考虑一个简单的 blazor 组件MyText
<p>@Title</p>
public partial class MyText
{
[Parameter] public string Title { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在页面中我将其用作:
<MyText Title="Abc" />
现在我想扩展这个组件,但不想更改它,而是通过新组件MyTextEx派生它并添加另一个参数。就像是:
@inherits MyText
<!-- Show base component something like: --!>
@base
<p>@Message</p>
public partial class MyTextEx
{
[Parameter] public string Message { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我找不到如何显示基本组件的内容?所以它被渲染为:
<p>@Title</p>
<p>@Message</p>
Run Code Online (Sandbox Code Playgroud)
请注意,这是一个简化的示例,我的基本组件有很多参数、事件,并希望虚拟方法可以被扩展/派生组件覆盖。我试图避免在基本组件的 razor 文件中使用类似于组合的方法,因为据我所知,我必须再次用参数填充它:
@inherits MyText
<MyText Title="@Title" />
<p>@Message</p>
Run Code Online (Sandbox Code Playgroud)
我能够找到带有基本/抽象组件的继承示例,但找不到带有最终组件的继承。
知道如何实现这一目标吗?
谢谢,查巴
我是.Net Maui的新手。尝试使用GraphicsView和绘制我自己的形状IDrawable。我想让形状可点击。
有办法实现吗?也许还有另一个IClickable我不知道的界面。或者我应该使用与GraphicsView.
谢谢 :-)
考虑 Blazor WebAssembly App(ASP.NET Core 托管)“空”项目。我调整了 Counter 页面如下:
<button class="btn btn-primary" @onclick="IncrementCountAsync">Click me</button>
Run Code Online (Sandbox Code Playgroud)
及其 Counter.razor.cs 文件:
public partial class Counter
{
private static int currentCount = 0;
private async Task IncrementCountAsync()
{
Console.WriteLine("Increment called");
_ = HeavyComputeAsync();
currentCount++;
Console.WriteLine($"Counter = {currentCount}");
}
private static Task<int> HeavyComputeAsync()
{
return Task.Run(() =>
{
Console.WriteLine("Task start");
for (long ndx = 0; ndx < 1000000; ++ndx)
ndx.ToString();
Console.WriteLine("Task end");
return 0;
});
}
}
Run Code Online (Sandbox Code Playgroud)
我将HeavyComputeAsync方法称为_ = ...,它不应等到IncrementCountAsync方法完成,而应立即更新currentCount …