Не биндится одно поле в DataGrid

Рейтинг: 1Ответов: 1Опубликовано: 30.10.2014

Здравствуйте! Помогите понять, почему в колонке Company не выводится желаемого значения (здесь, название компании).

После компиляции такое:

Surname | Name  |  Company
---------------------------------------
Sidorov | Sasha |  DataGridBind.Company
Petrov  | Misha |  DataGridBind.Company

MainWindow.xaml.cs:

namespace DataGridBind
{
    /// <summary>
    /// Логика взаимодействия для MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            Person person = new Person("Sasha", "Sidorov", new Company("Teremok") );
            Person person1 = new Person("Misha", "Petrov",new Company("SubWay"));
            ObservableCollection<Person> persons = new ObservableCollection<Person> { person, person1 };

            personDataGrid.ItemsSource = persons;
        }

    }
}

Person.cs :

namespace DataGridBind
{
   public class Person
    {
       public string Name { get; set; }
       public string Surname { get; set; }
       public Company Company { get; set; }

       public Person() { }

       public Person(string _name, string _surname, Company _company)
       {
           Name = _name;
           Surname = _surname;
           Company = _company;
       }
    }

    public class Company 
    {
        public string Name  {get;set;}

        public Company() { }

        public Company(string _name)

        {
            Name = _name;
        }
    }

}

Xaml:

<Window
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:DataGridBind"  x:Class="DataGridBind.MainWindow"
        Title="MainWindow" Height="350" Width="525">

    <Grid >

        <DataGrid x:Name="personDataGrid" AutoGenerateColumns="False" EnableRowVirtualization="True" Margin="10,10,138,177" RowDetailsVisibilityMode="Visible">

            <DataGrid.Columns>

                <DataGridTextColumn x:Name="nameColumn" Binding="{Binding Name}" Header="Name" Width="SizeToHeader"/>
                <DataGridTextColumn x:Name="surnameColumn" Binding="{Binding  Surname}" Header="Surname" Width="SizeToHeader"/>
                <DataGridTextColumn x:Name="companyColumn" Binding="{Binding Company}" Header="Company" Width="200"/>
            </DataGrid.Columns>
        </DataGrid>
    </Grid>
</Window>

Ответы

▲ 2Принят

Все спасибо, не отвечайте! Уже ответ получил.

Там в коде XAML надо было после Company через точку свойство Name ставить. Хотя я пытался и так это делать, но мне после точки не выскакивала подсказка, поэтому думал, что неправильно делаю.

https://stackoverflow.com/questions/26663890/failed-binding-data-to-datagrid