Нерабочее связывание WPF - PullRequest
1 голос
/ 03 декабря 2010

Я нуб WPF и надеюсь, что однажды я перестану быть таким (Lol)

В любом случае у меня возникают проблемы с привязкой DataTable (полученного из OleDBDataAdapter) к DataGrid. Несмотря на то, что DataTable не пуст, я ничего не получаю от DataGrid, он работает только в том случае, если я вручную настраиваю свойство ItemsSource в коде. Помогите? [Я хочу сделать это автоматически, чтобы любые изменения, внесенные в сетку, отражались в DataTable, позволяя мне просто использовать OleDBCommandbuilder для обновления самой базы данных Access (да, я ленивый :)) Я думал о расширении DataTable для реализации INotifyCollectionChanged, но я не уверен, что это выполнимо: S]

XAML:

            <Grid>
                <DataGrid Grid.Column="0" Grid.ColumnSpan="2" x:Name="ListaArticulos" 
                          Padding="-5,0,0,0" AutoGenerateColumns="False" ItemsSource="{Binding Articulos}">
                    <DataGrid.Columns>
                        <DataGridTextColumn IsReadOnly="True" Width="Auto" Header="ID" Binding="{Binding ID}"/>
                        <DataGridTextColumn Header="Nombre Articulo" Binding="{Binding Nombre}"/>
                        <DataGridTextColumn Header="Categoria" Binding="{Binding Categoria}"/>
                        <DataGridTextColumn Header="Valor" Binding="{Binding Valor}"/>
                        <DataGridTextColumn Header="Cantidad" Binding="{Binding Cantidad}" />
                        <DataGridTextColumn Header="Color" Binding="{Binding Color}" />
                        <DataGridTextColumn Header="Material" Binding="{Binding Material}" />
                        <DataGridTextColumn Header="Referencia" Binding="{Binding Referencia}" Width="*"/>
                    </DataGrid.Columns>
                </DataGrid>
            </Grid>

Code-Behind:

    public DataTable _Articulos = new DataTable();

    public DataTable Articulos { get { return _Articulos; } }

    public MainWindow()
    {
        InitializeComponent();
        ListaArticulos.DataContext = this;
        ReadDB();
    }

ReadDB () обновляет базу данных Articulos.

Заранее спасибо.

1 Ответ

2 голосов
/ 03 декабря 2010

ваш код

    InitializeComponent();
    ListaArticulos.DataContext = this;
    ReadDB();

изменить на

    ReadDB();
    InitializeComponent();
...