Ну в WPF популярно использование паттерна MVVM, потому часто используют Binding к данным и командам (из ViewModel) вместо code behind в самом View (Window.xaml.cs).
И у команды, например, удобно, что есть CanExecute, где легко можно задать условия включения кнопки.
По-моему после InitializeComponent() это надо делать иначе body у вас еще не будет.
Второй код странный, вы вообще понимали что делали в нем? Зачем вам класс TextBlock с одним полем Text и как вы объект этого класса собирались запихнуть в окно? UI элементы ж таки не настолько простые, да и не наследник UIElement он, которого хочет метод Add.