«Связывание» не может быть установлено в свойстве «Источник» типа «Связывание» - PullRequest
8 голосов
/ 07 февраля 2011

«Связывание» не может быть установлено в свойстве «Источник» типа «Связывание». «Связывание» может быть установлено только для свойства DependencyObject объекта Dependency.

    <TreeView Height="400" Width="400">
    <TreeViewItem ItemsSource="{Binding Source={Binding Path=Data}, XPath=*, 
Converter={StaticResource stringToXmlDataProviderConverter},ConverterParameter=/root }" Header="header" />
    </TreeView>
  • Что не так с ItemsSource = "{Binding Source = {Binding Path = Data}?

    Data = "<root><parm1>1</parm1><parm2>2</parm2><parm3>3</parm3></root>"
    

Я пытаюсь использовать этот пример кода. Разница в том, что я хочу привязать ItemsSource к данным в текстовом формате. С конвертером все в порядке.

EDIT:

<TreeViewItem ItemsSource="{Binding Path=Data}" Header="Parameters" />

Заполняет TreeView одним элементом (строкой). Таким образом, текст данных правильный.

EDIT: Этот код работает лучше. Существует ли общий способ чтения XML в ThreeView? Я не знаю структуру XML. Во всех примерах, которые я видел, вы должны объявлять типы подузлов.

<TreeViewItem DataContext="{Binding Path=Data, Converter={StaticResource stringToXmlDataProviderConverter}}" ItemsSource="{Binding .}" Header="Parameters" />

1 Ответ

4 голосов
/ 07 февраля 2011

Свойство Binding Source не может быть связано, поскольку оно не является свойством Dependency.Вы уверены, что не хотите этого делать?:

{Binding Path=Data, XPath=*, Converter={StaticResource stringToXmlDataProviderConverter},ConverterParameter=/root}

РЕДАКТИРОВАТЬ:

Контрольный список для проверки при отладке привязок:

1) Правильно ли установлен DataContext?

2) Является лисвойство, видимое для кода XAML?

3) Доступно ли свойство (поместите точку останова в его получатель).Возвращает ли оно значение, которое предполагается?

4) Правильно ли обновлено свойство?Должен применяться любой из следующих сценариев:

  • Свойство DependecyProperty

  • Свойство уведомляет об изменении через INotofyPropertyChanged

  • Значение свойства, которое мы завершили перед вызовом InitializeComponent ()

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