C# 未找到UWP GridView静态资源

C# 未找到UWP GridView静态资源,c#,gridview,uwp,itemtemplateselector,C#,Gridview,Uwp,Itemtemplateselector,我正在使用GridView处理一个UWP项目,我希望根据数据动态填充不同的项模板 MainPage.xaml: <GridView HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="80, 40, 60, 40" BorderThickness="0" ItemsSource="{x:Bind Favorites}" ItemTemplateSele

我正在使用GridView处理一个UWP项目,我希望根据数据动态填充不同的项模板

MainPage.xaml:

<GridView HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
          Margin="80, 40, 60, 40" BorderThickness="0"
          ItemsSource="{x:Bind Favorites}"
          ItemTemplateSelector="{StaticResource ItemTemplateSelector}">
    <GridView.ItemContainerStyle>
        <Style TargetType="GridViewItem">
            <Setter Property="Margin" Value="0, 0, 0, 32"/>
        </Style>
    </GridView.ItemContainerStyle>
</GridView>

<Page.Resources>
    <local:ItemTemplateSelector x:Key="ItemTemplateSelector"
                                   Template1="{StaticResource Template1}"
                                   Template2="{StaticResource Template2}">

    </local:ItemTemplateSelector>
    <DataTemplate x:Key="Template1" x:DataType="data:Test1" >
        <local:Template1 HorizontalAlignment="Stretch" VerticalAlignment="Stretch"></local:Template1>
    </DataTemplate>
    <DataTemplate x:Key="Template2" x:DataType="data:" >
        <local:Template2 HorizontalAlignment="Stretch" VerticalAlignment="Stretch"></local:Template2>
    </DataTemplate>
</Page.Resources>
public class ItemTemplateSelector: DataTemplateSelector
{
    protected override DataTemplate SelectTemplateCore(object item, DependencyObject container)
    {
        if (item is Test1)
        {
            return Template1;
        }
        else if (item is Test2)
        {
            return Template2;
        }
        else
        {
            return base.SelectTemplateCore(item);
        }
    }

    public DataTemplate Template1 { get; set; }
    public DataTemplate Template2 { get; set; }
}
问题是,当我尝试运行应用程序时,会出现以下错误:

Windows.UI.Xaml.Markup.XamlParseException: 'The text associated with this error code could not be found.
Cannot find a Resource with the Name/Key ItemTemplateSelector [Line: 66 Position: 19]'

您应该在使用前定义资源。尝试在页面资源中的ItemTemplateSelector之前定义Template1和2。资源在使用前应该定义

<Page.Resources>
    <DataTemplate x:Key="Template1" >
        <local:Template1 HorizontalAlignment="Stretch" VerticalAlignment="Stretch"></local:Template1>
    </DataTemplate>
    <DataTemplate x:Key="Template2"  >
        <local:Template2 HorizontalAlignment="Stretch" VerticalAlignment="Stretch"></local:Template2>
    </DataTemplate>

    <local:ItemTemplateSelector x:Key="ItemTemplateSelector"
                               Template1="{StaticResource Template1}"
                               Template2="{StaticResource Template2}">

    </local:ItemTemplateSelector>
</Page.Resources>

<Grid>
    <GridView HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
      Margin="80, 40, 60, 40" BorderThickness="0"
      ItemTemplateSelector="{StaticResource ItemTemplateSelector}">
        <GridView.ItemContainerStyle>
            <Style TargetType="GridViewItem">
                <Setter Property="Margin" Value="0, 0, 0, 32"/>
            </Style>
        </GridView.ItemContainerStyle>
    </GridView>
</Grid>


我在

中编写了代码,您应该在使用前定义资源。尝试在页面资源中的ItemTemplateSelector之前定义Template1和2。资源在使用前应该定义

<Page.Resources>
    <DataTemplate x:Key="Template1" >
        <local:Template1 HorizontalAlignment="Stretch" VerticalAlignment="Stretch"></local:Template1>
    </DataTemplate>
    <DataTemplate x:Key="Template2"  >
        <local:Template2 HorizontalAlignment="Stretch" VerticalAlignment="Stretch"></local:Template2>
    </DataTemplate>

    <local:ItemTemplateSelector x:Key="ItemTemplateSelector"
                               Template1="{StaticResource Template1}"
                               Template2="{StaticResource Template2}">

    </local:ItemTemplateSelector>
</Page.Resources>

<Grid>
    <GridView HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
      Margin="80, 40, 60, 40" BorderThickness="0"
      ItemTemplateSelector="{StaticResource ItemTemplateSelector}">
        <GridView.ItemContainerStyle>
            <Style TargetType="GridViewItem">
                <Setter Property="Margin" Value="0, 0, 0, 32"/>
            </Style>
        </GridView.ItemContainerStyle>
    </GridView>
</Grid>


我在

中编写代码,谢谢您的帮助!现在我正在努力向模板显示数据。。。Template1中的DataContext为null,因此除了空模板外,不会显示任何内容。我的用户控件中有一个:this.DataContextChanged+=(s,e)=>Bindings.Update();你应该定义gridview的Itemssource@页面中的Zapper您在页面中设置了die Itemsource吗?找不到。尽管如此,我还是想补充一句,谢谢你的帮助!现在我正在努力向模板显示数据。。。Template1中的DataContext为null,因此除了空模板外,不会显示任何内容。我的用户控件中有一个:this.DataContextChanged+=(s,e)=>Bindings.Update();你应该定义gridview的Itemssource@页面中的Zapper您在页面中设置了die Itemsource吗?找不到。尽管如此,我还是想补充一点