public override ValidationResult Validate(object value, CultureInfo cultureInfo)
        {
            BindingGroup bindingGroup = (BindingGroup)value;

            if (bindingGroup.Items.Count > 0)
            {
                VmpM.VMPTableBaseModel    vmpLayer = (VmpM.VMPTableBaseModel)(bindingGroup.Items[0]);
                VmpVM.VMPDataRepositoryVM vmpRepo  = vmpLayer.Source as VmpVM.VMPDataRepositoryVM;

                BooleanYesNoConverter boolYesNo = new BooleanYesNoConverter();
                bool useBounds = Convert.ToBoolean(boolYesNo.ConvertBack(bindingGroup.GetValue(vmpLayer, "UseBounds"), null, null, null));

                object minScaleObj = bindingGroup.GetValue(vmpLayer, "MinScale");
                object maxScaleObj = bindingGroup.GetValue(vmpLayer, "MaxScale");

                int minScale = -1;
                int maxScale = -1;

                try
                {
                    minScale = Convert.ToInt32(minScaleObj);
                }
                catch (Exception ex)
                {
                    String mes = "Ошибка в значении нижней границы масштаба: \n" + ex.Message;
                    return(new ValidationResult(false, mes));
                }
                try
                {
                    maxScale = Convert.ToInt32(maxScaleObj);
                }
                catch (Exception ex)
                {
                    String mes = "Ошибка в значении верхней границы масштаба: \n" + ex.Message;
                    return(new ValidationResult(false, mes));
                }

                if (minScale < 0)
                {
                    return(new ValidationResult(false, "Минимальное значение не может быть отрицательным числом"));
                }
                if (maxScale < 0)
                {
                    return(new ValidationResult(false, "Максимальное значение не может быть отрицательным числом"));
                }
                if (minScale > maxScale)
                {
                    return(new ValidationResult(false, "Минимальное значение не может быть больше максимального"));
                }
            }

            return(ValidationResult.ValidResult);
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Загрузка слоев подложки (выполняется только один раз)
 /// </summary>
 public void UpdateBottomLayers()
 {
     foreach (mvLayer layer in _bottomLayers)
     {
         var table = FindTable(layer.NAME) as VMPM.VMPTableBaseModel;
         if (table != null)
         {
             table.UseBounds = layer.usebounds;
             table.MinScale  = (int)layer.MinScale;
             table.MaxScale  = (int)layer.MaxScale;
         }
         else
         {
             table = new VMPM.VMPTableBaseModel(this, layer.NAME, AbsM.ETableType.BottomLayer)
             {
                 NameMap    = layer.NAME,
                 Name       = layer.NAME,
                 Text       = layer.NAME,
                 GeomType   = AbsM.EGeomType.None,
                 MinScale   = (int)layer.MinScale,
                 MaxScale   = (int)layer.MaxScale,
                 UseBounds  = layer.usebounds,
                 IsVisible  = layer.Visible,
                 IsReadOnly = true,
                 Tag        = null
             };
             try
             {
                 _tables.Add(table);
                 MGroupAddTable(_groups[0], table);
             }
             catch (Exception ex)
             {
                 MessageBox.Show(ex.Message);
             }
         }
     }
 }