调试此类SelectTemplate方法运行2次,但为什么?
第一次该项始终为空。
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;
}
}
答案 0 :(得分:0)
您可以设置一个断点并检查堆栈跟踪以进行验证,但我相信在设置可视树时,它会使用空输入调用一次,第二次是实际填充绑定时。
答案 1 :(得分:0)
如果您的选择器要查看“空”或“正在加载”,则第一个调用将使您的选择器有机会在元素加载时提供该模板。