WPF Newbie Grid Обязательный вопрос - PullRequest
0 голосов
/ 03 сентября 2010

Я новичок в 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 ]

1 голос
/ 03 сентября 2010

Вам необходимо привязать сетку данных к источнику данных ... в данном случае, к одному из ObjectDataProviders.

Итак, измени

ItemsSource="{Binding Path=Table}"

К

ItemsSource="{StaticResource CurrencyConversionList}"
0 голосов
/ 03 сентября 2010

В приведенном выше коде DataContext для вашей DataGrid (или даже для Window) никогда нигде не задавался, поэтому ваш 'ItemsSource = "{Binding Path = Table}" "для DataGrid не будет работать. Может быть, вам нужно сделать что-то вроде «this.DataContext = qualityDataSet» в вашем конструкторе.

...