将数据集绑定到仅显示1条记录的列表框

时间:2012-12-15 20:22:07

标签: c# wpf mvvm binding listbox

我有基于MVVM的WPF项目。在我看来,我有下一个ListBox

<ListBox BorderBrush="#6797c8" BorderThickness="2" 
    ItemsSource="{Binding  Path=CategoriesDS}" 
    DisplayMemberPath="MainCategories/Category"/>

这是我在ViewModel的代码:

private DataSet categoriesDS;

public DataSet CategoriesDS
{
    get
    {
        if (categoriesDS == null)
        {
            categoriesDS = _dal.GetCategoriesTables();
        }
        return categoriesDS;
    }
    set
    {
        categoriesDS = value;
        if (this.PropertyChanged != null)
        {
            this.PropertyChanged(this,
                  new PropertyChangedEventArgs("CategoriesDS"));
        }
    }
}

我的DataSet包含2个表,第一个表(“MainCategories”)包含3行。 当我运行我的应用程序时,我只看到“MainCategories”表的第一行。

为什么ListBox只显示1行?我想展示整个表格。

由于

1 个答案:

答案 0 :(得分:1)

您需要直接绑定到表。您可以创建另一个只访问CategoriesDS属性的属性,然后绑定新属性:

public DataView MainCategories 
{ 
  get { return CategoriesDS.MainCategories.DefaultView; } 
}

public DataView MainCategories 
{ 
  get { return CategoriesDS.Tables[0].DefaultView; } 
}

<强> XAML

<ListBox BorderBrush="#6797c8" BorderThickness="2" 
    ItemsSource="{Binding  Path=MainCategories}" 
    DisplayMemberPath="Category"/>