WPF Ожидание выполнения привязки - PullRequest
0 голосов
/ 29 июня 2011

Я получил следующий XAML:

<ng:Chart Palette="TheTreesPalette">
    <ng:Chart.Diagrams>
        <Diagram Key="PersonnelHoursAWeek" For="{Binding}" Value="BarSeries3D" />
        <Diagram Key="PersonId" For="{Binding}" Value="BarSeries3D" />
    </ng:Chart.Diagrams>
</ng:Chart>

В коде:

  • Диаграмма - это простой ContentControl.
  • Диаграммы - это коллекция (и DependencyObject)и DependencyProperty из диаграммы
  • Диаграмма - это объект DependencyObject в диаграммах

Моя диаграмма должна быть обновлена, когда диаграмма будет добавлена ​​в список диаграмм.Используя DependencyProperty.Register, я зарегистрировал список «Диаграммы», но он не будет ожидать привязки (поэтому свойство For (для Diagram) будет пустым при прохождении «события»).

chart.cs:

public static readonly DependencyProperty DiagramsProperty = DependencyProperty.Register("Diagrams", typeof(SkillsNG.Application.Behaviors.DiagramCollection), typeof(Chart), new UIPropertyMetadata(null, FunctionToCall));
private static void FunctionToCall(DependencyObject @this, DependencyPropertyChangedEventArgs e)
{
}

Что можно сделать, чтобы получить заполненное свойство For?

Кстати, событие «Loaded» до сих пор не имеет привязки.

Чтобы объяснить немного больше: у диаграммы может быть несколько баров / линий, свойство For даст набор данных одной строке / строке (в моем примере это называется диаграммой).Ключ - это его DataMember.

Привязка - это привязка к модели, данной представлению.Но Binding может быть «Binding Set1» и «Binding Set2» (наборы данных для линий, которые я хочу отобразить).

Привязка верна на 100%, мой график будет отображаться, когда я просто подожду одну секунду, чтобысвязать все это.Поэтому я хочу, чтобы эта более легкая диаграмма уведомляла Chart о том, что она была изменена, или Chart, которая может добавить событие (конструкция, похожая на Diagram.ForProperty.AddOwner).

1 Ответ

0 голосов
/ 29 июня 2011

Не уверен, что ваш Chart DataContext установлен (это то, что даст вам {Binding} для дочернего элемента), но коллекция Diagrams и ее элементы не являются элементами, поэтому не будут являться частью логического дерева Wpf, поэтому не наследует родительский Chart DataContext.Я ожидаю увидеть ошибки привязки в окне вывода на этот счет, когда вы запустите это в отладке.

Я думаю, что у вас в основном та же проблема, что и в этом вопросе: Как связать ту же коллекциюзначения во все комбинированные списки в DataGridComboBox? , который обеспечивает решение для устранения этого разрыва в логическом дереве Wpf.

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