0

xmlファイルがあり、その中のデータを表示するためのコントロールを作成しました。表示されるノードのほとんどには子がありませんが、子があるものもあります。必要なものについては、ItemsControlにいくつかの属性値をリストする必要があります。それをテストするために依存関係プロパティとしてリストを作成することができ、文字列は期待どおりに表示されました。しかし、今私はxmlにバインドしようとしていますが、機能していないようです。

依存関係プロパティをListに変更し、この依存関係プロパティを値SubOptions = "{Binding Path=ChildNodes}"でバインドしました。コントロール内では、ItemsControlのItemsSourceも独自の依存関係プロパティにバインドされています。

なぜこれが機能しないのでしょうか?バインディングにテストコンバーターを貼り付けたとき、それが与えていた値は「XmlChildNodes」でした。これは直接作成できませんが、暗黙的にListに変換しようとするたびに機能しました...

4

1 に答える 1

0

わかりました、私はそれを見つけたと思います。この問題を抱えている他の人のために、ここに何が起こったのかがあります:

リストを使用すると、フォーム上のコントロールのすべてのインスタンスでリストが同じであることがわかりました(したがって、異なるリストを持つコントロールの複数のインスタンスを持つことはできませんでした)。ここを検索したところ、何らかの理由で依存関係プロパティがデフォルトで各インスタンスに同じリストを使用していることがわかりました(ダム)が、解決策はコードを配置することでした:

SetValue(SubOptionsProperty, new List<string>());

コンストラクターで、新しいリストに設定されるようにします。これは文字列にはうまく機能しましたが、バインディングまたはxmlリストのいずれかがそのように機能しないようです。バインディングから値を設定していたようで、コンストラクターのこのコードがそれをダンプして新しいリストに設定していました。興味深いことに、同じリストを使用しておらず、コントロールごとに異なるリストを使用できます。

その行をコメントアウトした後、今は機能しているようですが、誰かがもっと情報を持っているなら、なぜそれが機能するのか知りたいです...

于 2012-08-17T15:56:32.180 に答える