1

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が返されます。

同じ問題に関する以下の記事を見つけましたが、解決策は私がやろうとしていることにはあまり適していません。どんな助けでも大歓迎です

http://forums.silverlight.net/forums/p/59912/248977.aspx

4

1 に答える 1

1

答えのちょっとしたハックとして、各タブのコントロールを一度に1つのタブで非表示のパネルにロードし、コントロールがロードされたら、それらをタブに戻すことができませんでしたか?

これが確実に機能するとは言えませんが、少し汚いハックをすると、「論理的」に聞こえます。

于 2011-05-18T13:08:34.937 に答える