6

プロパティを持つオブジェクトに設定されているが、あるとしUserControlます。コントロールのXAMLでこのプロパティにバインドし、XPathを指定したいと思います。私はこれを試しました:DataContextXmlDataProvider

<TreeView ItemsSource="{Binding Path=PropertyName, XPath=/items/item/*}">

実行時に、「XPathを使用したBindingExpressionは非XMLオブジェクトにバインドできません」という例外が発生します。Pathプロパティを削除し、TreeViewのDataContextをXmlPropertyName直接に設定すると正常に機能します。

何が得られますか?相互に排他的ですPathか?XPath

4

1 に答える 1

3

データ バインディングの概要の「値へのパスの指定」セクションで簡単に説明されているように、それらは相互に排他的ではありません。XPath 式は Path プロパティの前に実行されますが、Bea Stollnitz がここここで説明しているように、使用することが望ましい場合もあります。

「Path プロパティを削除し、TreeView の DataContext を XmlPropertyName に直接設定すると、問題なく動作します。」

あなたがこれについて言及したので、Path プロパティが XPath 式の前に評価されることを期待しているように思えます。これがエラーが発生している理由であり、XPath 式は現在のコンテキストが何であれ評価されており、パスはその後の評価です。エラーの説明

于 2009-06-30T22:24:31.723 に答える