WPF:Datagrid不显示数据

时间:2019-05-23 09:41:48

标签: c# wpf list xaml datagrid

我想在我的DataGrid中显示一个列表 不幸的是它什么也没显示。

我知道他们还有很多与此主题相关的主题,但是我无法将它们应用于我的解决方案。

我尝试了几件事:

template<typename Return, typename Obj, typename... Args> void addRouteSyncReturn( Return (Obj::* pmf) (Args...), ) { ... }

ItemSource = "{Binding}"

(MainWindow.xaml.cs):

<DataGrid x:Name="ContainerGrid" HorizontalAlignment="Left" Height="187" Margin="10,222,0,0" VerticalAlignment="Top" Width="772" IsReadOnly="True" AutoGenerateColumns="True" Grid.ColumnSpan="2">
<DataGrid.Columns>
     <DataGridTemplateColumn  MinWidth="200"   >
       <DataGridTemplateColumn.CellTemplate>
         <DataTemplate>
            <ListBox ItemsSource="{Binding containers}" />
          </DataTemplate>
        </DataGridTemplateColumn.CellTemplate>
      </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>

那是我当前的DataGrid:

ContainerGrid.ItemsSource = Container.getContainerList();

那是我的课:

<DataGrid x:Name="ContainerGrid" HorizontalAlignment="Left" Height="187" Margin="10,222,0,0" VerticalAlignment="Top" Width="772" IsReadOnly="True" AutoGenerateColumns="True" Grid.ColumnSpan="2" ItemsSource="{Binding containers}"/>

这就是我将对象添加到列表的方式:

    {
        private string id;
        private String name, version,status;
        public static List<Container> containers = new List<Container>();

        public Container() { }

        public Container(string id,String containerName, String version,String status)
        {
            this.id = id;
            name = containerName;
            this.version = version;
            this.status = status;
        }

        public static void AddContainerToList(Container container)
        {
            containers.Add(container);
        }

        public static List<Container> getContainerList()
        {
            return containers;
        }



    }

我看不到我犯的错误。 还请阅读有关ObservableCollections的信息,但我认为这将是需要做的大量更改。

请帮助:D

p.s。对不起,我的英语不好

1 个答案:

答案 0 :(得分:0)

必须将

idnameversionstatus定义为公共属性DataGrid才能生成列对于他们,以及您能够绑定到他们。

您可能还想重命名它们,以符合使用PascalCase作为属性名称的C#命名约定:

public class Container
{
    public string Id { get; private set; }
    public string Name { get; private set; }
    public string Version { get; private set; }
    public string Status { get; private set; }
    public static List<Container> containers = new List<Container>();

    public Container() { }

    public Container(string id, String containerName, String version, String status)
    {
        Id = id;
        Name = containerName;
        Version = version;
        Status = status;
    }

    public static void AddContainerToList(Container container)
    {
        containers.Add(container);
    }

    public static List<Container> getContainerList()
    {
        return containers;
    }
}