Wpf 如何在designtime上解析ContentControl ContentTemplateSelector?
为什么我无法在designtime上解析ContentControl ContentTemplateSelector?Wpf 如何在designtime上解析ContentControl ContentTemplateSelector?,wpf,contentcontrol,Wpf,Contentcontrol,为什么我无法在designtime上解析ContentControl ContentTemplateSelector? (在运行时工作) 设计器(VS2010)显示了一个异常: System.Reflection.TargetInputException异常 异常已由 调用的目标 及 System.NullReferenceException对象 引用未设置为的实例 反对 XAML: 我怀疑Application.Current.MainWindow在设计时没有设置。H.B.关于Applicat
(在运行时工作)
设计器(VS2010)显示了一个异常: System.Reflection.TargetInputException异常 异常已由 调用的目标 及 System.NullReferenceException对象 引用未设置为的实例 反对 XAML:
我怀疑
Application.Current.MainWindow
在设计时没有设置。H.B.关于Application.Current.MainWindow
在设计时为null
是正确的。以下是按名称检索资源的更好方法:
public override DataTemplate SelectTemplate( object item, DependencyObject container ) {
var element = container as FrameworkElement;
if ( element != null ) {
var template = element.TryFindResource( "Temp1" ) as DataTemplate;
if ( template != null ) {
return template;
}
}
return base.SelectTemplate( item, container );
}
<>你的代码的其他部分仍然是不完整的,所以我希望你正处于中间。例如,您的
DataTemplate
应该具有绑定,而不是硬编码的值。您的类真的被称为myTemplateSelector
?这与XAML不匹配。调用正常,这是一个拼写错误。(如果它在运行时工作,这意味着它可以)您仍然应该编辑您的问题,但是…我有这个问题,这是因为在设计时,它可能没有一些对象,因为它在运行时。请确保在尝试了这里的一些示例后重新构建解决方案,因为我不得不这么做。这是一个示例,ContentControl将包含在datagrid columnheader样式中,它将为每个列标题加载特定的模板(基于标题的名称)
public class TemplateSelector : DataTemplateSelector
{
public override DataTemplate SelectTemplate(object item, DependencyObject container)
{
//int num = int.Parse(item.ToString());
Window win = Application.Current.MainWindow;
return win.FindResource("Temp1") as DataTemplate;//load template based on num...
}
}
public override DataTemplate SelectTemplate( object item, DependencyObject container ) {
var element = container as FrameworkElement;
if ( element != null ) {
var template = element.TryFindResource( "Temp1" ) as DataTemplate;
if ( template != null ) {
return template;
}
}
return base.SelectTemplate( item, container );
}