Позвольте мне сначала попытаться помочь вам найти решение вашей проблемы:
Нет необходимости определять:
<Button Content="{Binding ElementName = _this, ....}"></Button>
потому что, когда вы устанавливаете новый созданный экземпляр отображения в своем файле кода для свойства DataContext вашего фактического экземпляра окна (this.DataContext), для WPF становится ясно, что данные, которые вы хотите предоставить в окно, лежат в вашем окне. Экземпляр отображения установлен в свойство DataContext.
Когда мы используем DataBinding, WPF иерархически ищет в дереве элементов следующий элемент, имеющий DataContext. Это означает, что, поскольку у вашей кнопки нет DataContext, WPF поднимается на уровень и смотрит (поскольку у вас нет иерархических элементов управления над кнопкой), установлен ли DataContext из окна. Поскольку DataContext в вашем случае уже был задан в вашем коде файла, WPF теперь знает, что вы хотите привязать данные к DataContext окна. Ну, все, что вам нужно сделать, это привязать к свойству, которое вы хотите отобразить. Вы можете сделать это так:
<Button Content="{Binding RelativeSource={RelativeSource Mode=FindAncestor,
AncestorType=Display}, Path=EquationText}"...>
Я бы порекомендовал вам использовать MVVM Pattern, чтобы получить достойное решение для упражнения, которое вы пытаетесь решить (:!
Код, который вы пытаетесь написать, смешивает разные обязанности, которые необходимо четко разделить. Окно, как показано на рисунке выше, должно представлять вид. Это означает, что не обязательно, чтобы окно отображения было отдельной страницей. Было бы лучше использовать контейнер, такой как сетка, для структурирования представления.
Кроме того, не должно быть никакой логики в коде позади файла к файлу xaml. Вместо использования ручек нажатия кнопок, было бы лучше использовать команды, определенные во ViewModel. Идеальное состояние, которого вы хотите достичь благодаря MVVM, - это то, что вы хотите полностью отделить представление и модель друг от друга. Это делает ваш код более удобным и легко заменяемым. Чтобы вернуться к указателям на клики: Не рекомендуется создавать обратный вызов для каждого отдельного номера. Это делает код более запутанным, особенно это приводит к избыточности, поскольку при каждом обратном вызове происходит одно и то же. Вы присваиваете строку тому же свойству. Таким образом, у вас будет 9 ключей, 9 обратных вызовов и, следовательно, 9x одинакового кода.
Я бы посоветовал вам взглянуть на шаблон MVVM, и я убежден, что ваш код будет более понятным.