我是编程新手,我试图限制用户删除每个字段以获得自定义条形码配置窗口,如下所示:
这是我们用来删除这些字段的代码
public BarcodeViewModel(IEnumerable<BatchTypeBarcodeConfig> barcode)
{
var barcodeDescription = new StringBuilder(64);
int sequenceNumber = -1;
Fields.AddRange(
barcode
?.Where(field => field != null)
.OrderBy(field => field.StartPosition)
.Select(field =>
{
sequenceNumber++;
if (field.FieldType == FieldTypeCode.STATIC)
{
barcodeDescription.Append(field.FieldText);
}
else
{
barcodeDescription.Append("(");
barcodeDescription.Append(field.FieldName);
barcodeDescription.Append(")");
}
var newField = new BarcodeFieldViewModel(field, sequenceNumber);
newField.FieldLayoutChangedEvent += BarcodeFieldViewModel_FieldLayoutChangedEvent;
return newField;
})
?? Enumerable.Empty<BarcodeFieldViewModel>());
Description = barcodeDescription.ToString();
}
public void Delete(BarcodeFieldViewModel field)
{
field.FieldLayoutChangedEvent -= BarcodeFieldViewModel_FieldLayoutChangedEvent;
Fields.Remove(field);
UpdateFieldPositionValues();
}
通过这种方法,用户可以删除每个条形码配置字段。有没有办法限制用户删除每个条形码字段?字段窗口中至少应有一个条形码字段。 任何帮助表示赞赏。
答案 0 :(得分:0)
如果Fields
是List<BarcodeFieldViewModel>
,那么您可以为Delete
方法添加简单验证:
if (Fields.Count > 1) {
field.FieldLayoutChangedEvent -= BarcodeFieldViewModel_FieldLayoutChangedEvent;
Fields.Remove(field);
UpdateFieldPositionValues();
}
您也可以使用相同的逻辑来确定删除按钮是否应该是可见的。