views:

66

answers:

2

I'm new to WPF. I have been been playing around with binding data to a grid. However the example below never calls the method that will be used to populate the grid. What do I need to do to make this go?

 <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"&gt;
    <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;
        }
      }
    }
+1  A: 

You need to bind the datagrid to a source of data.. in this case, one of the ObjectDataProviders.

So, change

ItemsSource="{Binding Path=Table}"

To

ItemsSource="{StaticResource CurrencyConversionList}"
mdm20
A: 

In the given code above, the DataContext for your DataGrid (or even the Window) was never set anywhere, so your 'ItemsSource="{Binding Path=Table}"' for the DataGrid will not work. Maybe you need to do something like "this.DataContext = qualityDataSet" in your constructor.

karmicpuppet