将自定义对象列表绑定到datagrid

时间:2016-04-05 19:06:46

标签: c# wpf binding

我有一个班级

public class ServerList
{
    public ServerList(string ipAdress, int port)
    {
        IPAdress = ipAdress;
        Port = port;
    }

    public string IPAdress { get; private set; }
    public int Port { get; private set; }
}

在第二个名为AddServerWindow的类中,我有一个包含ServerList对象的列表

public ObservableCollection<ServerList> ServerLists = new ObservableCollection<ServerList>(); 

如何将其绑定到放置在mainwindow上的datagrid。 我是这样尝试smth的: 在MainWindow.cs

DataContext = new
        {
            dump = this,
            server = new AddServerWindow(),
        };

在MainWindow.xaml

<DataGridTextColumn Header="Server" IsReadOnly="True" Width="*" Binding="{Binding server.IPAdress}"></DataGridTextColumn>
<DataGridTextColumn Header="Port" IsReadOnly="True" Width="0.6*" Binding="{Binding server.Port}"></DataGridTextColumn>

更改为下面的代码后,DataGrid仍为空,但现在有10列

ItemsSource="{Binding Source=ServerLists}"

1 个答案:

答案 0 :(得分:1)

您需要绑定DataGrid的ItemsSource。执行此操作后,每行的DataContext都是ServerList,因此您可以将列直接绑定到IPAdress和Port。尝试这样的事情:

<DataGrid ItemsSource="{Binding server.ServerLists}" AutoGenerateColumns="False">
    <DataGrid.Columns>
       <DataGridTextColumn Header="Server" IsReadOnly="True" Width="*" Binding="{Binding IPAdress}"/>
       <DataGridTextColumn Header="Port" IsReadOnly="True" Width="0.6*" Binding="{Binding Port}"/>
    </DataGrid.Columns>
</DataGrid>