1

我是新手,谷歌这次没有帮助我。我能够遵循一些示例并填充 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"/>

我可能错过了一些非常简单的东西。什么是正确的方法?我还想将所选值(无多选)绑定到我的代码中的另一个属性。任何人都可以帮忙吗?不知道为什么我会变得如此困惑。

4

2 回答 2

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" />
于 2012-10-18T17:11:20.940 回答
1

您缺少 ItemsSource 的绑定。

像这样的东西:

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

myCollection暴露列表的属性在哪里。

于 2012-10-18T15:43:17.050 回答