2011-02-07 24 views
8

'バインディング'は、 'バインディング'タイプの 'ソース'プロパティで設定できません。 「Binding」はDependencyObjectのDependencyPropertyでのみ設定できます。'バインディング'タイプの 'ソース'プロパティに 'Binding'を設定できません

私は thisのサンプルコードを使用しようとするのItemsSourceは= "{}ソース= {バインディングパス=データバインディング?

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

と間違っている何

<TreeView Height="400" Width="400"> 
    <TreeViewItem ItemsSource="{Binding Source={Binding Path=Data}, XPath=*, 
Converter={StaticResource stringToXmlDataProviderConverter},ConverterParameter=/root }" Header="header" /> 
    </TreeView> 
  • 。 違いは、ItemsSourceをdatacontextのデータにバインドすることです。 コンバーターには何も問題はありません。

    EDIT:

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

    は、一つの要素(文字列)と、ツリービューを塗りつぶし。だからdatacontextは正しいです。

    編集: このコードはうまくいきます。 ThreeViewでXMLを読み取る一般的な方法はありますか?私はXMLの構造を知らない。すべての例で、私はあなたがサブノードの型を宣言しなければならないことを見てきました。

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

「データ」はどのように見えますか?そのデータ型は何ですか?そのプロパティは何ですか? – Gabe

答えて

4

バインディングのプロパティは、依存関係プロパティではないため、バインドできません。あなたはこれをしたくないと確信していますか? :

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

EDIT:

1)あなたは正しくのDataContextを設定している

:バインディングをデバッグ中

チェックリストを確認しますか?

2)XAMLコードにプロパティが表示されていますか?

3)プロパティにアクセスしていますか(そのゲッターにブレークポイントを入れます)。それは、それが仮定されている値を返しますか?

4)プロパティが正しく更新されていますか?次のシナリオのいずれかが適用されなければなりません:

  • をプロパティがDependecyProperty

  • あるプロパティがINotofyPropertyChanged

  • 経由程度 その変化を通知し、私たちはのInitializeComponent()

  • を呼び出す前に を確定プロパティ値
+0

解決策は何ですか? –

+0

私は内側の束縛を取り除いた。 –

+0

私はあなたのコードを使用しても例外はありませんが、私はツリー内にデータを取得しません。 stringToXmlDataProviderConverterも実行されません。 –

関連する問題