Лучший способ установить значение по умолчанию в жестком коде - использовать XAML, поэтому ваш первый подход верен.Проблема возникает в вашем обработчике события TextChanged
.Это событие будет вызываться внутри InitializeComponent
, и в этот момент ваша переменная birthdayParty
не будет установлена, поэтому NullReferenceException
.
Чтобы преодолеть это, проверьте в обработчике событий, что ваш birthdayParty
переменная была инициализирована.Таким образом, ваш обработчик событий будет выглядеть так:
private void cakeWritingText_TextChanged(object sender, TextChangedEventArgs e)
{
if (birthdayParty == null)
{
return;
}
birthdayParty.CakeWriting = cakeWritingText.Text;
DisplayBirthdayPartyCost();
}
Это, очевидно, приведет к тому, что вы пропустите первый параметр свойства CakeWriting
, поэтому вам нужно будет получить это значение внутри вашего конструктора после инициализацииПеременная.
Однако, если вы хотите, чтобы свойство CakeWriting
всегда содержало значение внутри вашего TextBox
, посмотрите Привязка данных WPF .Это лучший подход для использования внутри интерфейса синхронизации WPF и значений модели данных.Также прочитайте эту статью о паттерне Model-View-ViewModel , который, вероятно, вы хотите попытаться реализовать.