0
<common:LayoutAwarePage
x:Name="pageRoot"
x:Class="Liz.MainPage"
DataContext="{Binding DefaultViewModel, RelativeSource={RelativeSource Self}}"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Liz"
xmlns:common="using:Liz.Common"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">

<Page.Resources>
    <DataTemplate x:Key="TempA">
        <Border Background="Red">
            <TextBlock Text="{Binding Title}" />
        </Border>
    </DataTemplate>
    <DataTemplate x:Key="TempB">
        <Border Background="Blue">
            <TextBlock Text="{Binding Title}" />
        </Border>
    </DataTemplate>

    <common:TemplateSelector x:Key="itemsTemplateSelector"
                         TemplateA="{StaticResource TempA}"
                         TemplateB="{StaticResource TempB}" />

データ テンプレート セレクターを利用しようとしていますが、私の xmal では、次のコード行でエラーが発生し続けます。

エラー 1 "TemplateSelector" という名前は名前空間 "using:Liz.Common" に存在しません。

私の TemplateSelector クラスは、次のように Common 名前空間で定義されています。

namespace Liz.Common
{
public class TemplateSelector : DataTemplateSelector
{
    int count = 0;
    public DataTemplate TemplateA { get; set; }
    public DataTemplate TemplateB { get; set; }

    protected override DataTemplate SelectTemplateCore
        (object item, DependencyObject container)
    {
        if (count % 2 == 0)
        {
            count++;
            return TemplateA;
        }
        else
        {
            count++;
            return TemplateB;
        }
    }
  }
}

なぜこのエラーが発生し続けるのかについてのアイデアはありますか? ローカル (Liz) 名前空間で TemplateSelector を定義しようとしても、同じ結果が得られました。注: インテリジェンス ドロップダウンは、common: を使用する場合に TemplateSelector の名前を適切に検出しますが、インテリジェンスから選択した後もエラーが発生します。

4

1 に答える 1

0

上記の XAML に問題はありません。新しいプロジェクトを作成し、クラスを追加して、XAML スニペットを挿入しました。XAML エディターは、最初は同じエラーを報告しましたが、ビルドは成功し、その後エラーは消えました。

これが結果のプロジェクトです。確認してください。

于 2012-12-28T05:47:34.720 に答える