我是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;
}
}
}
答案 0 :(得分:1)
您需要将datagrid绑定到数据源..在本例中,是ObjectDataProviders之一。
所以,改变
ItemsSource="{Binding Path=Table}"
要
ItemsSource="{StaticResource CurrencyConversionList}"
答案 1 :(得分:0)
在上面给出的代码中,DataGrid(甚至是Window)的DataContext从未在任何地方设置过,因此DataGrid的'ItemsSource =“{Binding Path = Table}”'将无效。也许你需要在构造函数中执行类似“this.DataContext = qualityDataSet”的操作。