C# Blazor select-like组件不更新数据源中的值

C# Blazor select-like组件不更新数据源中的值,c#,data-binding,blazor,client-side,C#,Data Binding,Blazor,Client Side,在我的Blazor Webassembly(客户端)3.2.0应用程序中,我在一个页面上有许多select元素,这些元素创建了一个组合框,列出了enum的可用项: @foreach(Enum.GetValues中的var元素(typeof(SomeEnum))) { @元素 } 虽然这样做有效,但我希望避免对每个这样的组合框重复我自己,并考虑创建以下EnumSelect组件: @typeparam T @foreach(Enum.GetValues(typeof(@T))中的var元素) {

在我的Blazor Webassembly(客户端)3.2.0应用程序中,我在一个页面上有许多
select
元素,这些元素创建了一个组合框,列出了
enum
的可用项:


@foreach(Enum.GetValues中的var元素(typeof(SomeEnum)))
{
@元素
}
虽然这样做有效,但我希望避免对每个这样的组合框重复我自己,并考虑创建以下
EnumSelect
组件:

@typeparam T
@foreach(Enum.GetValues(typeof(@T))中的var元素)
{
@元素
}
@代码{
[参数]
公共T值{get;set;}=default(T)!;
[参数]
public EventCallback ValueChanged{get;set;}
}
然后像这样使用它:


但是,当显示
SomeEnumValue
属性和枚举项时,从组合框中选择另一项时,不会将该属性写回

我不知道为什么这不起作用。我有点怀疑
EnumSelect
组件存储它自己的值副本,而不是写回它,但我认为绑定解决了这个问题


有什么(更简单的)方法可以让这个组合框组件工作吗?我的错误在哪里(在理解绑定方面)?

通过重新编写我的问题找到了答案(对不起,还不习惯所有Blazor术语):

对于我的问题,最后一个工作组件如下所示:检查属性中的值是否实际更改是必需的,或者我挂起了我的应用程序(可能是因为它想反复设置它):

@typeparam T
@foreach(Enum.GetValues(typeof(@T))中的var元素)
{
@元素
}
@代码{
私有T_值=默认值(T)!;
[参数]
公共价值
{
获取=>\u值;
设置
{
如果(_值等于(值))
返回;
_价值=价值;
ValueChanged.InvokeAsync(_值);
}
}
[参数]
public EventCallback ValueChanged{get;set;}
}