如何阻止CascadingValue或从Blazor的EditContext中排除组件?



我要解决的问题:在EditForm内部使用一些DevExpress Blazor组件时,我遇到了一个问题,它们不工作。我认为这是因为EditForm提供了一个EditContext作为级联值,当它存在时,Dx控件需要设置ValueExpressionCheckedExpression等。一个例子是尝试为EditForm:

中的网格启用列选择器。https://demos.devexpress.com/blazor/Grid/Columns ColumnChooser

当我尝试打开列选择器时,我得到这个错误:

系统。InvalidOperationException: DevExpress.Blazor.DxCheckBox需要一个' checkedexexpression '属性的值。

下面是一个简单的例子:

<EditForm Model="data">
<input type="number" @bind-value="data.Id" />
<DxCheckBox
T="bool"
Checked="unrelatedValue" 
CheckedChanged="b => unrelatedValue = b">
</DxCheckBox>
</EditForm>
@code {
private DataObject data = new DataObject();
private bool unrelatedValue;
public class DataObject
{
public int? Id { get; set; }
}
}

如果将DxCheckBox移到EditForm之外,则不会发生错误。

是否有任何方法可以阻止CascadingValue或以其他方式从EditContext中排除组件,以便它不需要设置Expression属性?

根据文档,如果你不使用双向绑定,那么你需要提供ValueExpression

考虑到您为Checked和CheckedChanged设置的值可以用于双向绑定,那么我将使用它:

@bind-Checked=@unrelatedValue

否则,添加ValueExpression:

ValueExpression=@(() => unrelatedValue)

相关内容

  • 没有找到相关文章

最新更新