0

xmlファイルのデータを表示し、ユーザーがデータを変更したり、保存したりできるようにするウィンドウを設定しています。ユーザーが操作している現在のファイル。

'xmlData'というXmlDataProviderを設定し、次のようにテキストをバインドしています。

Text="{Binding Path=Source, Source={StaticResource xmlData}}"

また、上記の静的リソースに対してdatacontextを試しましたが、データプロバイダーにxmlファイルがあることがわかっていても(書き込み可能です)、どちらも空白のテキストボックスを表示します。私は何かが足りないのですか、それともこの方法でこれを行うことはできませんか?

4

2 に答える 2

1

問題は、それが文字列XmlDataProvider.Sourceではないということです。Uriしたがって、次のようなことをしたいと思うでしょう。

Text="{Binding Path=Source.AbsolutePath, Source={StaticResource xmlData}}"

絶対パスでは、次のようなものは得られません。C:\My documents\test.xmlただし、次のようなものになる可能性が高くなりますfile://c:/my documents/test.xml。したがって、必要なものを取得するためにソースを操作するための良い方法を見つける必要がありますUri

できることの1つは、Converterを使用して解析し、必要なものを返すことです。

あなたが望むものをあなたに与えるかもしれないように見えUri.LocalPathますが、私はそれをテストせずに100%確信していません。

于 2012-08-20T18:07:15.733 に答える
0

うまくいくものを見つけましたが、それは私が望んでいたものではありません。私はそれで「古い学校」に行くことになった。コードビハインドのフォームに、バッキング変数とget/setメソッドを使用して標準プロパティを配置しました。setメソッドでは、textプロパティをバッキング変数と同じ値に設定するだけです。

私はこれを答えとしてマークして、誰かがより良い解決策を持っているかどうかを確認するのを待っています。

-私が試したこと-

上記の回答/会話の後、デバッガーで値に割り込んでコンバーターに何が渡されているかを確認できるように、値を返すだけのコンバーターを貼り付けてみました。何をしてもブレークポイントに到達できなかったので、なんらかの理由でコンバーターに到達していなかったようです。

次に、フォーム自体の背後にあるコードに依存関係プロパティを定義し、ラッパーとして標準プロパティを定義し(getとsetは依存関係プロパティのGetValueとSetValueを使用するだけです)、テキストボックスのテキストをrelativesourceとfindancestor。基本的に、テキストをフォームのそのプロパティにバインドしました。次に、ユーザーが新しいファイルを参照するたびに、コードビハインドのラッパーを使用してプロパティを変更しました。これはロードアップで機能しましたが、コードで値を設定するたびに、テキストボックスのテキストが更新されませんでした。診断を使用して、バインディングトレースを高に設定しました。フォームが見つかり、値などにバインドされていることを確認しましたが、browseメソッドを押してパスを変更すると、出力もテキストも変更されません。

私が言ったように、私が持っているものは機能していて、それは私が推測するのは合理的ですが、誰かがこれが機能しない理由についての洞察を追加できるなら、私は知りたいと思います。私はWPFにかなり慣れていないので、これらのことを正しく行う方法を学びたいと思っています...

于 2012-08-21T16:05:34.587 に答える