Привязать к представлению коллекции и просто вызвать ToString () в WPF - PullRequest
3 голосов
/ 28 мая 2010

Я привязываю GridView к коллекции объектов, которые выглядят так:

public class Transaction
{
   public string PersonName { get; set; }
   public DateTime TransactionDate { get; set; }
   public MoneyCollection TransactedMoney { get; set;}
}

MoneyCollection просто наследуется от ObservableCollection<T> и является коллекцией объекта типа MyMoney.

В моем GridView я просто хочу привязать столбец к методу MoneyCollection ToString(). Однако привязка его непосредственно к свойству TransactedMoney заставляет каждую запись отображать текст "(Коллекция)", а метод ToString() никогда не вызывается.

Обратите внимание, что Я не хочу связывать элементы в MoneyCollection , я хочу привязать непосредственно к самому свойству и просто вызвать ToString() для него.

Я понимаю, что это привязка к представлению коллекции по умолчанию. Поэтому мой вопрос - как я могу связать его с коллекцией таким образом, чтобы он вызывал для нее метод ToString()?

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

Ответы [ 2 ]

4 голосов
/ 28 мая 2010

Вы можете добавить свойство StringRepresentation или что-то подобное в MyMoney классе. Если вы не хотите влиять на этот класс, вы должны написать обертку - MyMoneyViewModel, которая будет иметь все необходимые свойства. Это распространенный способ. Е.И.В.!

3 голосов
/ 28 мая 2010

Напишите реализацию IValueConverter, которая вызывает ToString () для связанной коллекции, возвращает ее и использует этот преобразователь в выражении привязки XAML.

...