Почему я получаю «ссылка на тип не может найти открытый тип» в этой привязке данных? - PullRequest
3 голосов
/ 27 апреля 2009

Почему ObjectDataProvider не распознает "local: Customer" в этом примере?

Когда я печатаю

<local:

Я получил intellisense для «Клиента», поэтому он должен работать. У меня нет кода в этом примере.

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 ]

1 голос
/ 27 апреля 2009

"x: Type" является расширением разметки, поэтому заключите его в фигурные скобки:

ObjectType="{x:Type local:Customer}"
0 голосов
/ 27 апреля 2009

Попробуйте добавить пространство имен в качестве префикса для класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...