限制删除条形码配置窗口的每个字段

时间:2018-03-26 15:58:10

标签: c# .net wpf

我是编程新手,我试图限制用户删除每个字段以获得自定义条形码配置窗口,如下所示:

enter image description here

这是我们用来删除这些字段的代码

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();
        }

通过这种方法,用户可以删除每个条形码配置字段。有没有办法限制用户删除每个条形码字段?字段窗口中至少应有一个条形码字段。 任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

如果FieldsList<BarcodeFieldViewModel>,那么您可以为Delete方法添加简单验证:

if (Fields.Count > 1) {
    field.FieldLayoutChangedEvent -= BarcodeFieldViewModel_FieldLayoutChangedEvent;
    Fields.Remove(field);
    UpdateFieldPositionValues();
}

您也可以使用相同的逻辑来确定删除按钮是否应该是可见的。