public PriceTagConstructor(TagType tagType, Address address)
        {
            this.tagType = tagType;
            this.address = address;
            InitFields();
            DisplayName = tagType == TagType.PriceTag ? "Конструктор ценника" : "Конструктор стеллажной карты";
            Alignments  = new[] {
                new KeyValuePair <string, TextAlignment>("По левому краю", TextAlignment.Left),
                new KeyValuePair <string, TextAlignment>("По центру", TextAlignment.Center),
                new KeyValuePair <string, TextAlignment>("По правому краю", TextAlignment.Right),
            };
            Fields = PriceTagItem.Items(tagType);

            Items = new ObservableCollection <PriceTagItem>();
            Items.CollectionChanged += (sender, args) => {
                Preview();
            };
            Selected.Subscribe(x => {
                SelectedItem.Value = (PriceTagItem)x?.DataContext;
                foreach (var property in typeof(PriceTagItem).GetProperties())
                {
                    OnPropertyChanged(property.Name);
                }
            });
            Tag.ChangedValue().Subscribe(x => Preview());
            Tag.Subscribe(x => {
                Items.Clear();
                Items.AddEach(Tag.Value?.Items ?? Enumerable.Empty <PriceTagItem>());
            });
        }