WPF新手网格绑定问题

时间:2010-09-03 13:06:29

标签: wpf wpf-controls binding

我是WPF的新手。我一直在玩绑定数据到网格。但是,下面的示例从不调用将用于填充网格的方法。我需要做些什么才能实现这一目标?

 <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;
        }
      }
    }

2 个答案:

答案 0 :(得分:1)

您需要将datagrid绑定到数据源..在本例中,是ObjectDataProviders之一。

所以,改变

ItemsSource="{Binding Path=Table}"

ItemsSource="{StaticResource CurrencyConversionList}"

答案 1 :(得分:0)

在上面给出的代码中,DataGrid(甚至是Window)的DataContext从未在任何地方设置过,因此DataGrid的'ItemsSource =“{Binding Path = Table}”'将无效。也许你需要在构造函数中执行类似“this.DataContext = qualityDataSet”的操作。