Свойство привязки данных нескольких объектов - PullRequest
0 голосов
/ 12 ноября 2009

как дела? У меня проблема. Я хочу привязать несколько объектов к одному текстовому полю, например. Допустим, у меня есть список с множеством задач. Каждое задание содержит заголовок.

public class Task
{
public string Title { get; set; }
[...]
}

Теперь я хочу выбрать две задачи в списке. Если заголовок обеих задач одинаков, я хочу, чтобы текстовое поле отображало заголовок. Если они разные, то ничего не должно отображаться.

Если пользователь изменяет значение, заголовок обеих задач должен быть изменен на новое значение.

На данный момент я создал новое свойство 'Title', которое связано в XAML. Есть 2 проблемы.

  1. Если я установлю DataContext сетки, программа прочитает «Заголовок» только один раз. Если установить для datacontext значение null, а затем снова для класса Task, то это сработает (хотя и ужасно).

  2. Если я изменю заголовок, он не будет немедленно изменен в списке. Только если список снова считывает список задач, он будет отображаться правильно.

    public string Title
    {
        get
        {
            string title = Tasks[0].Title;
    
            for (int i = 1; i < Tasks.Count; i++)
            {
                if (title != Tasks[i].Title)
                    return "";
            }
    
            return title;
        }
        set
        {
            foreach (Task task in Tasks)
                task.Title = value;
        }
    }
    

Спасибо за вашу помощь

Поздравления stfx

1 Ответ

0 голосов
/ 12 ноября 2009

Используйте MultiValueConverter .Его цель - реализовать конвертеры, поддерживающие множественные привязки (объекты MultiBinding), так что вы можете связать более чем одну задачу.

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