Сетка дерева Просмотр ошибок связывания при изменении коллекции - PullRequest
1 голос
/ 16 февраля 2012

У меня есть приложение WPF MVVM, которое содержит настраиваемое древовидное представление сетки, которое получает информацию из наблюдаемой коллекции.

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

Однако, если я изменяю элементы в наблюдаемой коллекции, я получаю следующую ошибку:

System.Windows.Data Error: 4 : Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='System.Windows.Controls.ItemsControl', AncestorLevel='1''. BindingExpression:Path=HorizontalContentAlignment; DataItem=null; target element is 'TreeListViewItem' (Name=''); target property is 'HorizontalContentAlignment' (type 'HorizontalAlignment')

Есть идеи, как мне решить эту проблему?

1 Ответ

2 голосов
/ 16 февраля 2012

Согласно этому очень короткому сообщению в блоге эта ошибка может произойти при попытке связать ListBoxItems. Теперь, из вышеприведенной ошибки, у вас проблемы с целевым элементом TreeListViewItem, но я определенно мог понять, как это может быть той же проблемой. Не могли бы вы попробовать один из двух способов исправить это, что предлагает блог? Оба просто создают собственный стиль для TreeListViewItem (или в его случае ListBoxItem). Два предложения:

  1. Явно задайте свойства HorizontalContentAlignment и VerticalContentAlignment
  2. Установите для OverridesDefaultStyle значение true и просто игнорируйте значение

    <Style x:Key="DeviceContainerStyle" TargetType="{x:Type ListBoxItem}">
    <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
    <Setter Property="VerticalContentAlignment" Value="Stretch"/>
    

Или:

    <Style x:Key="DeviceContainerStyle" TargetType="{x:Type ListBoxItem}">
    <Setter Property="OverridesDefaultStyle" Value="True"/>

Вы, конечно, измените их на TreeListViewItem, а не на ListBoxItem. =)

...