首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在设计时解析ContentControl ContentTemplateSelector?

如何在设计时解析ContentControl ContentTemplateSelector?
EN

Stack Overflow用户
提问于 2011-05-30 16:43:45
回答 2查看 3.1K关注 0票数 3

为什么我不能在设计时解析ContentControl ContentTemplateSelector?

(运行时起作用)

Designer (VS2010)显示一个异常:

调用的目标引发了

System.Reflection.TargetInvocationException异常。

System.NullReferenceException对象引用未设置为对象的实例。

XAML:

代码语言:javascript
复制
<Window.Resources>
    <DataTemplate x:Key="Temp1">
       <TextBox TextWrapping="Wrap" Text="1" Height="20" Width="Auto"/>
    </DataTemplate>

    <local:TemplateSelector x:Key="mySelector"/>
    <Grid>
       <ContentControl ContentTemplateSelector="{StaticResource mySelector}">
          <ContentControl.Content>
               1
          </ContentControl.Content>
       </ContentControl>      
    </Grid>
 </Window.Resources>

C#:

代码语言:javascript
复制
    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...
         }

    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-30 17:15:51

H.B.关于Application.Current.MainWindow在设计时是null是正确的。下面是一种按名称检索资源的更好方法:

代码语言:javascript
复制
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应该有绑定,而不是硬编码值。

票数 2
EN

Stack Overflow用户

发布于 2011-05-30 17:01:28

我怀疑Application.Current.MainWindow不是在设计时设置的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6178782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档