我正试图基于blazor中的一个类属性来呈现不同的页面,其中只有一个tagg。
在WPF中,我能够创建多个视图,并在对象的道具中指定要使用UserControl类呈现的视图。
WPF数据内容:
public UserControl DetailView { get; set; }
WPF parentView:
<UserControl Content="{Binding DetailView}"></UserControl>
通过这种方式,我能够根据属性动态呈现不同的页面。
我正努力在布拉佐实现同样的目标。我不想在我的blazorView 中使用一堆If elses
我认为DynamicComponent
就是您想要的。
文档:
https://learn.microsoft.com/en-us/aspnet/core/blazor/components/dynamiccomponent?view=aspnetcore-6.0
使用select
元素动态选择应渲染哪个组件的示例:
<select @bind="selectedComponentIndex">
@for (var i = 0; i < componentTypes.Count; i++)
{
<option value="@i">@componentTypes[i].Name</option>
}
</select>
<DynamicComponent Type="componentTypes[selectedComponentIndex]" />
@code {
private int selectedComponentIndex = 0;
private List<Type> componentTypes = new List<Type>
{
typeof(Component1),
typeof(Component2),
typeof(Component3),
};
}