2010-02-15 3 views
1

У меня есть следующая коллекция, которая служит в качестве глобального хранилища для группы элементов LineSeries ItemsSources для диаграммы.WPF Databinding в вопросе кода

public ObservableCollection<ObservableCollection<Data>> AllDataSeries; 

Упомянутая коллекция может меняться каждый сейчас и потом, когда он сбрасывается очистить таблицу из всех серий - и когда он вновь заселять снова я добавляю, как много серий на графике как AllDataSeries.Count говорит мне к.

На этом этапе мне нужно установить привязку.

Дело в том, что у меня нет идеи, как составить путь для привязки. Я пробовал:

String.Format("AllDataSeries[{0}]", i) 

но это не сработало.

Как установить свойство Path на привязку?

ответ

1

Действительно ли AllDataSeries является полем, а не собственностью? Я не думаю, что PropertyPath будет следовать публичному полю. Не рекомендуется выставлять открытые поля в любом случае, так что вы, вероятно, следует просто изменить, что:

public ObservableCollection<ObservableCollection<Data>> AllDataSeries 
{ 
    get; 
    private set; 
} 

Но чтобы ответить на ваш вопрос о синтаксисе связывания, я считаю, ваш синтаксис PropertyPath правильно. Хотя я нервничаю по поводу вложенного ObservableCollection. Лично я бы просто отказаться от привязки в целом и сделать что-то вроде:

series.ItemsSource = AllDataSeries[i]; 

Он не похож на изменения в коллекцию AllDataSeries собирается запустить новую серию добавляемой в любом случае.

Вы не забыли установить DataContext диаграммы? При желании вы можете установить свойство Source привязки.

binding.Source = this; 

Наконец, вы должны изменить BindingMode на OneWay и удалить UpdateSourceTrigger. Диаграмма является контролем только для чтения, поэтому нет причин иметь двустороннюю привязку.

Надеюсь, это поможет.

+0

Эй, спасибо за подробный ответ. AllDataSeries - это свойство (здесь уже полночь, и я не думаю, что это очень ясно). Я нашел ошибку в строке series.SetBinding (это должно быть свойство LinearSeries.ItemsSource, а не ListView.ItemsSource). Он по-прежнему не работает, после вызова SetBinding ItemsSource имеет значение NULL. есть идеи? Я установил DataContext диаграммы. – Maciek

+0

Вы пытались установить источник привязки явно? Я бы ожидал, что DataContext будет распространяться в серию, но у меня нет никакого опыта с элементами управления диаграммами в наборе инструментов WPF. – Josh

+0

Я также должен повторить, что второй абзац вашего вопроса указывает мне, что вы на самом деле ничего не получаете, установив привязку здесь. Конечно, я бы хотел знать, почему привязка тоже не работает, но в конце концов я думаю, что вам лучше будет установить ItemsSource = AllDataSeries [i] в ​​этом случае. – Josh