代码之家  ›  专栏  ›  技术社区  ›  Edward Tanguay

为什么在此数据绑定上获取“类型引用找不到公共类型”?

  •  3
  • Edward Tanguay  · 技术社区  · 16 年前

    为什么 ObjectDataProvider不识别“本地:客户” 在这个例子中?

    当我打字时

    <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;
            }
        }
    }
    
    2 回复  |  直到 16 年前
        1
  •  1
  •   Matt Hamilton    16 年前

    “x:type”是标记扩展名,因此将其括在大括号中:

    ObjectType="{x:Type local:Customer}"
    
        2
  •  0
  •   cjk    16 年前

    尝试将命名空间添加为类的前缀。

    推荐文章