public override void UpdateCustomGeometryProperty()
        {
            var      customGeomDef = Geometry.GetValue(GeometryExtProps.CustomGeometryProperty);
            XElement xCustomGeom;

            if (customGeomDef is string)
            {
                xCustomGeom = XElement.Parse((string)customGeomDef);
            }
            else
            {
                xCustomGeom = new XElement("XDraw2_CustomGeometry",
                                           new XAttribute("CompanionAssembly", GetType().Assembly.GetName().Name),
                                           new XAttribute("CompanionType", GetType().FullName));
            }
            var xTextGeom = xCustomGeom.Element("TextGeometry");

            if (xTextGeom == null)
            {
                xTextGeom = new XElement("TextGeometry");
                xCustomGeom.Add(xTextGeom);
            }
            SetAttr(xTextGeom, "Text", _Text);
            SetAttr(xTextGeom, "Position", _Position.ToString(CultureInfo.InvariantCulture));
            SetAttr(xTextGeom, "Size", _Size.ToString(CultureInfo.InvariantCulture));
            SetAttr(xTextGeom, "TextSize", _TextSize.ToString(CultureInfo.InvariantCulture));
            SetAttr(xTextGeom, "FontFamily", _FontFamily.Source);
            var fsc = new FontStyleConverter();

            SetAttr(xTextGeom, "FontStyle", fsc.ConvertToInvariantString(_FontStyle));
            var fwc = new FontWeightConverter();

            SetAttr(xTextGeom, "FontWeight", fwc.ConvertToInvariantString(_FontWeight));
            SetAttr(xTextGeom, "TextAlignment", _Alignment.ToString());
            SetAttr(xTextGeom, "TextTrimming", _Trimming.ToString());

            Geometry.SetValue(GeometryExtProps.CustomGeometryProperty, xCustomGeom.ToString());
        }