使用Binding将Listbox绑定到DataTable

时间:2012-10-18 15:40:41

标签: c# wpf data-binding datatable

我是新手,Google这次没有帮助我。我能够遵循一些示例并填充DataGrid并修改数据库,但ListView给了我一个问题。这是我的班级:

public class GlobalDataviews : INotifyPropertyChanged   
{
    ...

    //Billable data table
    //Populated elsewhere with "SELECT ID, Value FROM BillableTable;"
    private DataTable mBillable;
    public DataView Billable()
    {
        return mBillable.DefaultView; 
    }  
}

这是我的XAML片段:

<Window.Resources>
    <ObjectDataProvider x:Key="GlobalDataviews" ObjectType="{x:Type local:GlobalDataviews}" />
    <ObjectDataProvider x:Key="BillableData" ObjectInstance="{StaticResource GlobalDataviews}" MethodName="Billable" />
</Window.Resources>

现在我的ListView:

<ListBox Name="listBox1" DataContext="{StaticResource BillableData}" SelectedValuePath="ID" DisplayMemberPath="Value"/>

我可能错过了一些非常简单的事情。什么是正确的方法?我还想将选定的值(没有多选)绑定到我的代码中的另一个属性。有人可以帮忙吗?不知道为什么我会这么困惑。

2 个答案:

答案 0 :(得分:2)

如果要设置DataContext,则必须将ItemsSource属性设置为绑定数据。

<ListBox x:Name="listBox1" DataContext="{StaticResource BusinessData}" ItemsSource="{Binding}" SelectedValuePath="ID" DisplayMemberPath="Value" />

否则,您可以直接绑定ItemsSource,如下所示:

<ListBox x:Name="listBox1" ItemsSource="{Binding Source={StaticResource BusinessData}}" SelectedValuePath="ID" DisplayMemberPath="Value" />

答案 1 :(得分:1)

您缺少ItemsSource的绑定。

这样的事情:

<ListBox Name="listBox1" DataContext="{StaticResource BusinessData}" ItemsSource="{Binding myCollection}" SelectedValuePath="ID" DisplayMemberPath="Value"/>

myCollection是展示您的列表的属性。