2010-12-03 58 views
1

我是一個WPF小白,我希望不要再有那麼一天(笑)非工作WPF綁定

不管怎麼說,我有問題的DataTable(從一個OleDbDataAdapter獲得)綁定到一個DataGrid。即使DataTable不爲空,我在DataGrid上也什麼都沒有,它只有在我手動設置代碼隱藏的ItemsSource屬性時才起作用。幫幫我? [我想這樣做是自動的,所以對網格所做的任何更改都會反映到DataTable中,使我能夠使用OleDBCommandbuilder更新Access數據庫本身(是的,我很懶惰:))。我想延長數據表來實現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> 

代碼隱藏:

public DataTable _Articulos = new DataTable(); 

    public DataTable Articulos { get { return _Articulos; } } 

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

ReadDB()更新Articulos DB。

在此先感謝。

+0

我已成功地使實現INotifyChanged增加它的每個事件的相關行的PropertyChangedEventHandler一個電話,再次一個DataTable類,我在初始數據網格上沒有任何提示...爲什麼? – Machinarius 2010-12-03 14:44:17

+0

如果需要,DataContext應該實現INotifyPropertyChanged接口,而不是ItemsSource。 – Matthieu 2010-12-03 15:27:29

回答

2

代碼

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

變化

ReadDB(); 
    InitializeComponent();