2010-09-03 3 views
0

Je suis nouveau à WPF. J'ai joué avec des données de liaison à une grille. Cependant, l'exemple ci-dessous n'appelle jamais la méthode qui sera utilisée pour remplir la grille. Que dois-je faire pour que ça marche?WPF Débutant Grille Bind Question

<Window x:Class="DataGridView.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:local="clr-namespace:DataGridView" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:dg="http://schemas.microsoft.com/wpf/2008/toolkit" 

     Title="Window1" Height="538" Width="681" 
     xmlns:my="http://schemas.microsoft.com/wpf/2008/toolkit"> 
    <Window.Resources> 
     <ObjectDataProvider x:Key="CurrencyConversionList" ObjectType="{x:Type local:CurrencyDataProvider}" MethodName="GetCurrencyConversionList" /> 
     <ObjectDataProvider x:Key="CurrencyList" ObjectType="{x:Type local:CurrencyDataProvider}" MethodName="GetCurrencyList" /> 
    </Window.Resources> 

    <Grid> 
     <dg:DataGrid Name="dataGrid1" AutoGenerateColumns="False" Height="255" Width="481" ItemsSource="{Binding Path=Table}" 
       ClipToBounds="False"> 
      <dg:DataGrid.Columns> 
       <dg:DataGridTextColumn Binding="{Binding Path=START_DATE, Mode=TwoWay}" Header="Start Date" /> 
       <dg:DataGridTextColumn Binding="{Binding Path=END_DATE, Mode=TwoWay}" Header="End Date" /> 
       <dg:DataGridComboBoxColumn SelectedValueBinding="{Binding CURRENCY_ID}" SelectedValuePath="FROM_CURRENCY_ID" 
         DisplayMemberPath="FROM_CURRENCY_ID" Header="From Currency" 
         ItemsSource="{Binding Source={StaticResource CurrencyList}}"> 
       </dg:DataGridComboBoxColumn> 
       <dg:DataGridComboBoxColumn SelectedValueBinding="{Binding CURRENCY_ID}" SelectedValuePath="CURRENCY_ID" 
         DisplayMemberPath="ContactName" Header="To Currency"></dg:DataGridComboBoxColumn> 
       <dg:DataGridTextColumn Binding="{Binding Path=CONVERSION_RATE, Mode=TwoWay}" Header="Rate" /> 
      </dg:DataGrid.Columns> 
     </dg:DataGrid> 
    </Grid> 
</Window> 



using System; 
    using System.Collections.Generic; 
    using System.Linq; 
    using System.Text; 
    using System.Windows; 
    using System.Windows.Controls; 
    using System.Windows.Data; 
    using System.Windows.Documents; 
    using System.Windows.Input; 
    using System.Windows.Media; 
    using System.Windows.Media.Imaging; 
    using System.Windows.Navigation; 
    using System.Windows.Shapes; 

    namespace DataGridView 
    { 
     /// <summary> 
     /// Interaction logic for Window1.xaml 
     /// </summary> 
     public partial class Window1: Window 
     { 
     private QualityDataSet qualityDataSet; 
     private qualityDataSetTableAdapters.CURRENCY_CONVERSIONTableAdapter cURRENCY_CONVERSIONTableAdapter; 
     private qualityDataSetTableAdapters.CURRENCYTableAdapter cURRENCYTableAdapter; 

     public Window1() 
     { 
      InitializeComponent(); 

     } 
     } 
    } 

     namespace DataGridView 
    { 
     class CurrencyDataProvider 
     { 
     private QualityDataSet qualityDataSet; 
     private QualityDataSetTableAdapters.CURRENCY_CONVERSIONTableAdapter cURRENCY_CONVERSIONTableAdapter; 
     private QualityDataSetTableAdapters.CURRENCYTableAdapter cURRENCYTableAdapter; 

     public DataView GetCurrencyList() 
     { 
      qualityDataSet = new QualityDataSet(); 

      cURRENCYTableAdapter = new QualityDataSetTableAdapters.CURRENCYTableAdapter(); 

      cURRENCYTableAdapter.Fill(this. qualityDataSet.CURRENCY); 

      return this. qualityDataSet.CURRENCY.DefaultView; 
     } 

     public DataView GetCurrencyConversionList() 
     { 
      qualityDataSet = new QualityDataSet(); 

      cURRENCY_CONVERSIONTableAdapter = new QualityDataSetTableAdapters.CURRENCY_CONVERSIONTableAdapter(); 

      cURRENCY_CONVERSIONTableAdapter.Fill(this. qualityDataSet.CURRENCY_CONVERSION); 

      return this. qualityDataSet.CURRENCY_CONVERSION.DefaultView; 
     } 
     } 
    } 

Répondre

1

Vous devez lier la grille de données à une source de données. Dans ce cas, l'un des ObjectDataProviders.

Alors, changer

ItemsSource="{Binding Path=Table}" 

Pour

ItemsSource="{StaticResource CurrencyConversionList}" 
0

Dans le code ci-dessus, le DataContext pour votre DataGrid (ou même la fenêtre) n'a jamais été mis partout, de sorte que votre « ItemsSource = » {Binding Path = Table} "'pour le DataGrid ne fonctionnera pas. Peut-être que vous avez besoin de faire quelque chose comme "this.DataContext = qualityDataSet" dans votre constructeur.