Document オブジェクトに「バインド」された Silverlight ユーザー コントロールがあります。ドキュメント クラスには、Field オブジェクトの配列が含まれています。その意図は、コントロールがドキュメントにバインドされると、ドキュメント内の各フィールドがユーザー コントロール内のコントロールにバインドされることです。各フィールドには名前があり、そのフィールドにバインドされるユーザー コントロール内のコントロールには同じ名前が付けられます (したがって、フィールドが "FirstName" と呼ばれる場合、ユーザー コントロール内に x:Name= のテキスト ボックスが表示されます)。 "ファーストネーム")。どのコントロールをどのフィールドにバインドするかを決定するために、次のコードを使用しました。
private void BindDocumentToUserControl(Document document)
{
foreach (Field field in document.Fields)
{
Control c = this.FindName(field.Name);
if (c != null)
{
//bind control to field...
}
}
}
コントロールをタブコントロールに配置しようとするまで、これはすべて正常に機能します。ユーザー コントロールが最初に読み込まれるとき (およびユーザーが選択したタブ自体を変更していないとき)、上記のメソッドはすべてのコントロールを見つけます。ただし、ユーザーが選択したタブを変更してからコントロールを再バインドした場合、this.FindName は選択したタブにあるコントロールのみを検索します。正しいことがわかっている別のタブでコントロールの名前を渡すと、それでもnullが返されます。
同じ問題に関する以下の記事を見つけましたが、解決策は私がやろうとしていることにはあまり適していません。どんな助けでも大歓迎です