@Quttar72
Изучаю asp.net core mvc

Почему в WPF источник не обновляет значение приемника?

Я изучаю WPF, и непосредственно тему "привязки", и решил применить их в деле. Попробовал реализовать следующий пример:

Пусть есть класс Phone (как видите не используются свойства зависимостей)
public class Phone
    {
        public string Title { get; set; }
        public int Price { get; set; }
    }


В ресурсах окна, я добавляю этот объект и задаю значения его свойств:
<Window.Resources>
        <local:Phone Title="Xiaomi" Price="10000" x:Key="myPhone"/>
    </Window.Resources>


И вот таким образом данные выводятся:
<TextBlock Grid.Column="0" Grid.Row="0" Text="Модель:"/>
<TextBlock Grid.Column="1" Grid.Row="0" Text="Цена:"/>
<TextBox Grid.Column="0" Grid.Row="1" Text="{Binding Source={StaticResource myPhone}, Path=Title, Mode=TwoWay}" />
<TextBox Grid.Column="1" Grid.Row="1" Text="{Binding Source={StaticResource myPhone}, Path=Price, Mode=TwoWay}" />


Так-же есть кнопки, чтобы вывести текущее значение объекта, а так-же чтобы его изменить:
<Button Content="Вывести текущие значения" Click="Button_Click_1" />
<Button Content="Изменить значение класса " Click="Button_Click_2" />

Обработчики нажатий:
private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            Phone phone = (Phone)this.Resources["myPhone"];
            MessageBox.Show($"Модель: {phone.Title}; Стоимоть: {phone.Price}");
        }

        private void Button_Click_2(object sender, RoutedEventArgs e)
        {
            Phone phone = (Phone)this.Resources["myPhone"];
            phone.Title = "iphone 6s";
            phone.Price = 50000;
        }


В результате получается такая графика (это не все приложение, я в нем разные вещи тестирую, но чтобы не отвлекаться на них, только непосредственно относящиеся участки кода привожу)
61fc31cc3553b928180700.png

Далее я не знаю стоит ли приводить скрниншоты, если нужно то отправлю пишите. Суть в чем: работает на половину, ну то есть в одну сторону привязка работает, а в другую нет.

Приемник -> Источник
Я удивился, но да это работает. При чем не применяются никакие свойства зависимостей. (Хотя если я правильно понимаю, то свойство зависимостей, это как наверно можно перевести зависимое свойство)

Источник -> Приемник
Вот тут максимально странно. Это работает при старте программы, но при работе программы изменения источника (Свойства Title и Price) не влияют на свойства приемника (Свойства Text). При этом, если я вывожу значение свойств класса через нажатие кнопки, то там они действительно изменились. То есть вроде наоборот более простая связь, от источника к приемнику по какой-то причине не работает.

Мне в первую очередь хочется понять не как это исправить, а то почему программа ведет себя именно так? То что приемник меняет источник это круто тут вопросов нет, но почему источник не меняет приемник? А именно почему он меняет его только один раз, а потому нет, вот именно этот момент наиболее не ясен.
  • Вопрос задан
  • 91 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы