2009-04-27 3 views
3

Pourquoi le ObjectDataProvider ne reconnaît-il pas "local: Customer" dans cet exemple?Pourquoi est-ce que "la référence de type ne trouve pas de type public" sur cette liaison de données?

Lorsque je tape

<local:

Je reçois IntelliSense pour "client" donc il devrait fonctionner. Je n'ai pas de code-behind dans cet exemple.

XAML:

<Window x:Class="TestDataTemplate124.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="clr-namespace:TestDataTemplate124" 
    Title="Window1" Height="300" Width="300"> 
    <Window.Resources> 
     <ObjectDataProvider x:Key="Customers" 
          ObjectType="x:Type local:Customer" 
          MethodName="GetAllCustomers"/> 
    </Window.Resources> 
    <StackPanel> 
     <ListBox DataContext="{StaticResource Customers}" ItemsSource="{Binding}"> 
      <ListBox.ItemTemplate> 
       <DataTemplate> 
        <StackPanel Orientation="Horizontal"> 
         <TextBlock Text="{Binding FirstName}"/> 
         <TextBlock Text=" "/> 
         <TextBlock Text="{Binding LastName}"/> 
         <TextBlock Text=" ("/> 
         <TextBlock Text="{Binding Age}"/> 
         <TextBlock Text=")"/> 
        </StackPanel> 
       </DataTemplate> 
      </ListBox.ItemTemplate> 
     </ListBox> 
    </StackPanel> 
</Window> 

Customer.cs:

using System.Collections.ObjectModel; 

namespace TestDataTemplate124 
{ 
    public class Customer 
    { 
     public string FirstName { get; set; } 
     public string LastName { get; set; } 
     public int Age { get; set; } 

     public static ObservableCollection<Customer> GetAllCustomers() 
     { 
      ObservableCollection<Customer> customers = new ObservableCollection<Customer>(); 
      customers.Add(new Customer() { FirstName = "Jim", LastName = "Smith", Age = 23 }); 
      customers.Add(new Customer() { FirstName = "John", LastName = "Jones", Age = 22 }); 
      customers.Add(new Customer() { FirstName = "Jay", LastName = "Anders", Age = 21 }); 
      return customers; 
     } 
    } 
} 

Répondre

1

"x: Type" est une extension de balisage, de sorte que l'enferment dans des accolades:

ObjectType="{x:Type local:Customer}" 
0

Essayez d'ajouter l'espace de nom en tant que préfixe pour t Il classe.

Questions connexes