Datagridtextcolumn связывается с датируемыми - PullRequest
0 голосов
/ 28 октября 2011

У меня возникают некоторые проблемы, когда у меня есть таблица данных, и я хочу привязать каждый столбец datagridtext в таблице данных к каждому столбцу в datatable.

мой код такой, как показано ниже

public class Packet
{
    public Header header { get; set; }
    public Frame frame { get; set; }
    public Tail tail { get; set; }
    public String id { get; set; }

    public Packet(String id,Header header, Frame frame, Tail tail)
    {
        this.id = id;
        this.header = header;
        this.frame = frame;
        this.tail = tail;
    }

}

Следовательно, на моей стороне xaml

<Grid >
    <DataGrid AutoGenerateColumns="False" ItemsSource="{Binding Path=.}" Name="dgrid" SelectionChanged="dgrid_SelectionChanged">
        <DataGrid.Columns>
            <DataGridTextColumn Header="ID" Binding="{Binding Path=id}"/>
        </DataGrid.Columns>

    </DataGrid>
</Grid>

А на моей стороне кода ds - это набор данных, который имеет один объект данных.Каждая строка представляет собой пакет из 4 столбцов, соответствующих хвосту и идентификатору кадра заголовка.Я пытаюсь получить идентификатор, чтобы правильно связать в первую очередь.Но номер идентификатора не может отображаться в сетке данных.

dgrid.DataContext = ds.Tables[0];

На самом деле он отображает правильные данные, если я не использую столбец данных в столбце xaml.но то, что я хотел, это сделать связывание на стороне xaml с данными.

Ответы [ 2 ]

0 голосов
/ 28 октября 2011

Если у вас есть класс модели, такой как Packet в вашем случае, тогда я бы предложил использовать наблюдаемую коллекцию вместо DataTable для хранения списка Packets.Элемент DataTable имеет тип DataRowView.

Я даже не уверен, как ваш DataTable держит экземпляр Packet?

Если ваши ds.Tables [0] .Rows [0] типа Packet или ds.Tables [0] .Rows [0] [0] имеет тип Packet?

Если это так, это может привести кмного проблем для переплета.

0 голосов
/ 28 октября 2011

Попробуйте это

 <Grid >
        <DataGrid AutoGenerateColumns="False" Name="dgrid" SelectionChanged="dgrid_SelectionChanged">
            <DataGrid.Columns>
                <DataGridTextColumn Header="ID" Binding="{Binding Path=id}"/>
            </DataGrid.Columns>
        </DataGrid>
    </Grid>

    dgrid.ItemsSource = ds.Tables[0].AsDataView();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...