0

このクラスをデバッグすると、SelectTemplate メソッドが 2 回実行されますが、なぜですか?

最初の項目は常に null です。

public class PersonDataTemplateSelector : DataTemplateSelector
{
    public override DataTemplate SelectTemplate(object item,DependencyObject container)
    {
        if (item is Person)
        {
            Person person = item as Person;

            Window window = Application.Current.MainWindow;

            if (System.ComponentModel.DesignerProperties.GetIsInDesignMode( window))
                return null;

            if (person.Gender == "male")               
                return window.FindResource("boysViewTemplate") as DataTemplate;
            else                
                return window.FindResource("girlsViewTemplate") as DataTemplate;

        }
        return null;
    }
}
4

2 に答える 2

0

セレクターが「空」または「読み込み中」の外観を提供する場合、最初の呼び出しにより、要素の読み込み中にそのテンプレートを提供する機会がセレクターに与えられます。

于 2010-03-29T02:49:40.573 に答える
0

ブレーク ポイントを設定し、スタック トレースをチェックして検証することはできますが、ビジュアル ツリーがセットアップされたときに null 入力で 1 回呼び出され、2 回目はバインディングが実際に設定されたときに呼び出されると思います。

于 2010-03-29T02:14:02.333 に答える