加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 未找到窗口资源的ItemTemplate

发布时间:2020-12-15 22:25:52 所属栏目:百科 来源:网络整理
导读:我有一个显示2个列表的窗口,它应该使用相同的模板,所以我考虑将模板放入我的窗口中的资源,如下所示: Grid Grid.Resources DataTemplate DataType="itemTemplateAsResourceTest:FeatureViewModel" x:Key="FeatureTemplate" TextBlock Margin="5" Text="{Bind
我有一个显示2个列表的窗口,它应该使用相同的模板,所以我考虑将模板放入我的窗口中的资源,如下所示:

<Grid>
    <Grid.Resources>
        <DataTemplate DataType="itemTemplateAsResourceTest:FeatureViewModel" x:Key="FeatureTemplate">
            <TextBlock Margin="5" Text="{Binding Name}"/>
        </DataTemplate>
    </Grid.Resources>

    <ListBox ItemTemplate="{StaticResource FeatureTemplate}" ItemsSource="{Binding Features}"/>
</Grid>

功能只是一个FeatureViewModel列表(我将它放在我的Mainwindow中用于测试应用程序),而FeatureViewModel在我的测试中看起来像这样:

public class FeatureViewModel
{
    public string Name
    {
        get { return "Name"; }
    }
}

它可以在Designer中运行,但是当我启动我的应用程序时,它说“资源’FeatureTemplate’找不到.它不能拼写错误,因为设计师发现它!我做错了什么?

当我将模板直接放入ListBox时,它可以工作,但后来我复制了我的模板:

<Grid>
    <ListBox ItemsSource="{Binding Features}">
        <ListBox.ItemTemplate>
            <DataTemplate DataType="itemTemplateAsResourceTest:FeatureViewModel">
                <TextBlock Margin="5" Text="{Binding Name}"/>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
</Grid>

重命名模板或直接将其移动到Window的资源并没有解决它,有人看到我的错误?

更改

<DataTemplate DataType="itemTemplateAsResourceTest:FeatureViewModel" x:Key="FeatureTemplate">

<DataTemplate DataType="{x:Type itemTemplateAsResourceTest:FeatureViewModel}" x:Key="FeatureTemplate">

做了伎俩!

解决方法

删除DataType.这是多余的,因为您已经设置了x:Key.

除此之外,它也被错误地写了,因为(与例如Style.TargetType相反)你必须使用{x:Type …}标记扩展.否则,DataType属性(属于object类型)只是设置为您在XAML中应用的字符串,而不是您要设置的Type.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读