Как повторно инициализировать элемент пользовательского интерфейса?

#wpf

#wpf

Вопрос:

У меня есть текст с некоторыми свойствами (ширина, высота, текст по умолчанию) в конструкторе XAML, в сценарии выполнения я изменил некоторые свойства для спецификации. Как откатить изменения к исходному состоянию, аналогичному пользовательскому интерфейсу, который изначально разработан в окне xaml, с помощью нажатия кнопки во время выполнения.

Комментарии:

1. эти значения нигде не хранятся, поэтому вам придется сохранять их регулярно, перезагружать полное окно или создавать новый элемент управления при перемещении измененного элемента

Ответ №1:

Исходные значения нигде не хранятся, поэтому некоторые идеи о том, что вы могли бы сделать:

  • Если вы используете MVVM, вы могли бы установить DataContext для нового экземпляра
  • Если вы используете исходный код, вы могли бы создать новый экземпляр UserControl / Window
  • Вы могли бы сохранить исходные значения вручную и написать метод для установки этих свойств в их значения по умолчанию
  • Вы могли бы использовать класс DefaultValueAttribute для определения значений по умолчанию, вот пример кода того, как его можно использовать, приведенный в документах:

     [DefaultValue(false)]
    public bool MyProperty
    {
        get
        {
            return _myVal;
        }
        set
        {
            _myVal = value;
        }
    }
    
    
    // Gets the attributes for the property.
    AttributeCollection attributes =
        TypeDescriptor.GetProperties(this)["MyProperty"].Attributes;
    
    /* Prints the default value by retrieving the DefaultValueAttribute 
     * from the AttributeCollection. */
    DefaultValueAttribute myAttribute =
        (DefaultValueAttribute) attributes[typeof(DefaultValueAttribute)];
    Console.WriteLine("The default value is: "   myAttribute.Value.ToString());
      

    С помощью этого вы могли бы легко написать статический метод для установки каждому свойству значения по умолчанию.