Определите, какое текстовое поле для обновления - PullRequest
0 голосов
/ 25 февраля 2019

РЕДАКТИРОВАТЬ: сделал проблему проще.

Модель

public class Human
    {
        public string Name { get; set; }
    }

ViewModel

public class HumanViewModel : INotifyPropertyChanged
{
    private Human human;
    public HumanViewModel()
    {
        human = new Human();
    }

    public string TxtHumanName
    {
        get => Human.Name;
        set
        {
            Human.Name = value;
            InvokePropertyChanged("Name");
        }
    }

    private void InvokePropertyChanged(string propertyName)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }

    public event PropertyChangedEventHandler PropertyChanged;
}

В моем XAML мне нужно 2 texboxbox т.е.

Human1: [] <- humanName1txtBox </p>

Human2: [] <- humanName2txtBox </p>

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

public Task SetName(HumanViewModel humanVM, string name)
    {
        humanVM.TxtHumanName = name;
        return Task.CompletedTask;
    }

Представьте себе, что вы запускаете это имя набора задач несколько раз.Как я могу назначить его так, чтобы в первый раз он обновил humanName1txtBox и во второй раз humanName2txtBox

1 Ответ

0 голосов
/ 25 февраля 2019

Когда вы повторяете что-то, вы должны думать об элементах управления и шаблонах элементов в пользовательском интерфейсе.

Свяжите источник элементов с наблюдаемой коллекцией rowvm, где rowvm - модель представления для каждой строки.Это помещается в текстовое поле или что-то еще, и ваша логика идет в rowvm.Поэтому он «знает», что обновлять, потому что он сам.

Очень простая вводная статья в MVVM.Вы хотите что-то более сложное, чем просто строка для вашей модели представления строки:

https://social.technet.microsoft.com/wiki/contents/articles/32164.wpf-mvvm-step-by-step-2.aspx

Не совсем точно, что вы хотите сделать, но у вас будет что-то вроде:

public rowVM : BaseViewModel
{
    private Task<result> doSomething
     {
       …..
     }
    public string WhateverYourTextIs  // propfull
}

Каждый из них представлен в виде строки в вашем представлении.

Всякий раз, когда вы хотите выполнить свой процесс, вы запускаете эту задачу и ожидаете ее.Это возвращает результат, и вы делаете все, что делаете с этим результатом.

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