2009-04-27 55 views
3

爲什麼ObjectDataProvider在本例中沒有識別「local:Customer」爲什麼我在這個數據綁定中得到「類型引用無法找到公共類型」?

當我鍵入

<local:

我得到 「客戶」 智能感知所以它應該工作。在這個例子中我沒有代碼隱藏。

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; 
     } 
    } 
} 

回答

1

「×:類型」 是一個標記擴展,所以它括在大括號:

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

嘗試添加命名空間作爲t的前綴他上課。

相關問題