2012-12-23 33 views
2

我有類,它爲對象選擇ItemDataTemplate。但我不能在我的XAML代碼中引用它。 (Page.Resources)。XAML中的命名空間錯誤中不存在類

這是XAML中的Items頁面。類是在公共文件夾,我在這裏引用的公共文件夾:

xmlns:common="using:Sample_App.Common" 

,然後當我wan't將其添加到我的XAML:

<common:MyDataTemplateSelector x:Key="Selector" AdTemplate="{StaticResource Ad}" NormalTemplate="{StaticResource Normal}"></common:MyDataTemplateSelector> 

我得到以下錯誤:

The name "MyDataTemplateSelector" does not exist in the namespace "using:MyDataSelector"

這裏的MyDataSelector類:

namespace MyDataSelector 
{ 
    private class MyDataTemplateSelector : DataTemplateSelector 
    { 
     public DataTemplate NormalTemplate { get; set; } 

     public DataTemplate AdTemplate{ get; set; } 

     protected override DataTemplate SelectTemplateCore(object item, DependencyObject container) 
     { 
      if (item is TestApp.Mainpage.NormalData) 
       return NormalTemplate 
      if (item is TestApp.Mainpage.AdData) 
       return AdTemplate; 

      return SelectTemplateCore(item, container); 
     } 
    } 
} 

回答

3

你的代碼有幾個問題。首先,你提到你的班級在「公共文件夾」中 - 這是完全不相關的。代碼文件的位置通常與編譯器無關,但您聲明中的類的名稱空間確實是的問題。

namespace MyDataSelector // <- This is where your class can be found 
{ 
    private class MyDataTemplateSelector : DataTemplateSelector 
    { 

如此以來,你的類是在命名空間MyDataSelector,在您的XAML文件的參考應該是這個樣子:

<Page x:Class="WpfApplication1.Page1" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:myDataSelector="using:MyDataSelector"> 

你會引用您的類是這樣的:

<myDataSelector:MyDataTemplateSelector /> 

另一個問題是你的班級被宣佈爲私人。這沒有意義,可能不會編譯。刪除private以使課程成爲內部課程,或將其更改爲public

相關問題