如何将对象列表绑定到infragistics数据网格?

时间:2010-01-22 17:38:16

标签: wpf datagrid mvvm binding infragistics

非常简单的任务,但源代码不能完成所需的工作......请指教。

班级中有产品系列(方法基于MVVm模式,但这不是当前问题的影响):

public class ProductWindowViewModel : WorkspaceViewModel // implements INotifyPropertyChanged
{
    public ProductWindowViewModel()
    {
        Products = new List<Product>(ProductService.Instance.Repository.GetAll());
    }

    List<Product> Products { get; set; }
}

这是类声明:

public class Product : IEntity
{
    #region Public Properties

    public int Id { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public int Cost { get; set; }

    #endregion
}

类实例绑定到窗口的网格数据上下文:

ProductWindow wnd = new ProductWindow();
wnd.MainGrid.DataContext = new ProductWindowViewModel();
wnd.ShowDialog();

这是窗口的xaml代码:

<Window x:Class="WpfTest1.ProductWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="ProductWindow" Height="300" Width="300" xmlns:igDP="http://infragistics.com/DataPresenter" 
xmlns:ViewModel="clr-namespace:ViewModel;assembly=ViewModel">

<Grid x:Name="MainGrid">
    <Grid.Resources>
        <ObjectDataProvider x:Key="odpObjectDataProvider" ObjectType="{x:Type ViewModel:ProductWindowViewModel}" />
    </Grid.Resources>
    <Grid DataContext="{StaticResource odpObjectDataProvider}">
        <igDP:XamDataGrid DataSource="{Binding Path=Products}"/>
    </Grid>
</Grid>

xamDataGrid样本是相同的。整体代码非常简单,但不起作用。

有人知道为什么吗?欢迎任何想法。

我如何调试绑定以解决问题?

感谢。

2 个答案:

答案 0 :(得分:1)

好吧,也许这不能完全回答你的问题,但看起来你正在实例化你的viewmodel类两次。一旦进入你的代码,在创建窗口后立即进入,并在ObjectDataProvider中进行一次。如果您选择其中一个,它可能会更容易调试。建议:
1.注释掉这一行:wnd.MainGrid.DataContext = new ProductWindowViewModel();
2.在viewmodel的构造函数中设置断点 3.启动它并查看断点是否被击中。如果它确实被击中,你知道你正在做正确的事情。

另外,检查visual studio中的输出窗口,看看是否有报告任何绑定异常。

答案 1 :(得分:0)

在我的例子中,windows构造函数中的代码是多余的。现在一切正常,似乎删除了不必要的任务解决了一个问题。