説明が不正確であるため、問題を解決するものを正確に伝えるのは難しいです。あなたは言う:
私はXMLファイル(単純なログファイル)にバインドされたListViewを持っている。
これは実際には可能ではありません。 ListView
はバインドできません。ItemsSource
のみバインドできません。また、XMLファイルにバインドすることはできませんが、XMLファイルから読み取ったデータを含むメモリ内のオブジェクトにのみバインドすることができます。これは私がニットを選んでいるように聞こえますが、私はそうではありません。実際に何をしているのかが明確になればなるほど、使いやすい答えを提供するのが簡単になります。
XmlDataProvider
をXAMLに定義しているように見えますが、そのSource
をXMLファイルの名前に設定します。これをメインウィンドウのリソースとして設定すると、メインウィンドウがロードされたときにロードされます。あなたの子ウィンドウが
<ListView ItemsSource="{StaticResource MyXmlDocument}" .../>
のようなものを持っている場合には、リソースディクショナリのFind
メソッドを使用してXmlDataProvider
を検索し、メインウィンドウのリソースディクショナリにそれを見つけるために起こっています。子ウィンドウを一日中閉じて再オープンすることができ、使用するXmlDataProvider
は変更されません。
この場合、おそらく2つのうちの1つが必要です。
まず、XmlDataProvider
リソースの定義を子ウィンドウのXAMLに移動できます。これにより、子ウィンドウがロードされるたびに子ウィンドウにXMLが再ロードされます。
第2に、XMLファイルがディスク上で変更されるたびにXmlDataProvider
を再作成するメソッドをメインウィンドウに追加できます。 (XMLファイルが変更されたときと、メインウィンドウでメソッドをトリガーする方法を知る方法は、解決するのが比較的難しい問題です。たとえば、FileSystemWatcher
イベントを使用できます)。DynamicResource
マークアップ拡張子を使用する必要がありますXMLファイルが変更されるたびに子ウィンドウがリフレッシュされます(既に開いている場合でも)。
ありがとうございます。奇妙な。私はなぜItemSourceが設定されたままになっているウィンドウを閉じると理解していない。何とか:ItemSourceをリセットするにはどうすればいいですか? – Rick
'リセット' ItemsSource/DataContext '再割り当て'を意味しますか?別の方法がありますか? – epalm