WPFでXML要素をXPath条件指定でバインディングする
WPFのバインディングでは、ソースがXMLの場合は、XPathによって要素の指定ができます。XAMLのバインディングしたいプロパティの値に次のように書きます。
1 |
Property="{Binding XPath=abc/enabled}" |
ただ、単純なデータならともかく、普通は条件を指定して要素をバインディングしたい場合も多いと思います。その場合は、式を書くことができますが、= イコールや ‘ クオーテーションといった文字をエスケープしておく必要があります。
たとえば 直下のtype要素が ‘xxx’ という値であるabc要素のenabled をバインディングする場合は下記のようになります。
1 |
Property="{Binding XPath=abc[type\=\'xxx\']/enabled}" |
ただし、Expression BlendのGUIから “カスタム式…” でバインディングする場合は、下記のように入力します。すると▲のように変換されます。
1 |
{Binding XPath="abc[type='xxx']/enabled"} |
もちろんValueConverterも利用できます。文字列要素だけを含む要素をバインドした場合、値はstring型になるようなのでstringから目的の型に変換するValueConverterを作成すればOKです。
スポンサーリンク
スポンサーリンク