Связанная строка в текстовое поле обновляется только одним классом и ни одним другим (WPF) - PullRequest
0 голосов
/ 20 марта 2019

В моем MainWindow у меня есть текстовое поле, и его текст привязан к MainClass, в котором есть открытая строка с именем "TBText" (в ней есть свойство change / поднимать свойства, поменяемые).У меня также есть кнопка, которая запускает событие в других 2 классах.

У меня есть 2 других класса, для которых в обоих классах задана другая строка с именем «ee», и при нажатии этой кнопки запускается измененное свойство.

В MainClass, когда происходит событие с измененным свойством (INotifyPropertyChanged) в любом из классов, оно обновляет эту основную строку с именем «TBText».

Когда я нажимаю кнопку, строка из 1 классаустановить основную строку, но не из другого класса, то есть вы видите строку только из первого класса, а не из второго (даже если в обоих классах происходит событие, изменяющее свойство)

Я пробовалиспользование задачи для своего рода отключения пользовательского интерфейса от фактического кода / бизнеса, но это тоже не работает.

Я пытался установить основную строку как строку набора в основном классе ("eeeeee")) когда запускается любое измененное свойство, и оно все еще обновляет только первый класс, а не второй.

Я также пробовал settiНапример, основная строка в виде строки второго класса, когда происходит изменение свойства первого класса ... все еще устанавливает ее как строку первого класса, почти как если бы строка второго класса была нулевой или пустой, если она не.

XAML (MainWindow):

<Window.DataContext>
    <local:MainViewModel/>
</Window.DataContext>
<TextBox Text="{Binding Stat, UpdateSourceTrigger=PropertyChanged}"/>

MainViewModel:

private string StatText;
public string Stat { get { return StatText; } set { StatText = value; RaisePropertyChanged("Stat"); } }

private void ClassOne_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
        if (e.PropertyName == "Stat") Stat += ClassOne.Stat;
}
    private void ClassTwo_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
        if (e.PropertyName == "StatsTwo") Stat += ClassTwo.StatsTwo;
}

Я не включил его в это, но когда кнопка нажата в MainWindowЭта команда связана с двумя классами и запускает одно и то же событие (я проверял, и они оба запускаются в одно и то же время).Единственная проблема состоит в том, что первый класс только изменяет текст, второй класс не делает.

И я также хочу сказать, что я не очень часто использую MVVM, но мне вроде удобно с привязкой текста / контента, команди т.д.

Есть ли способ это исправить?потому что я понятия не имею, почему это не работает ...

Редактировать: переменная первого класса изменяется MainWindow, а переменная второго класса - другим окном

1 Ответ

0 голосов
/ 20 марта 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...