1

私はこれに不慣れで、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"/>

私はおそらく非常に単純なものが欠けています。正しい方法は何ですか?また、選択した値(複数選択なし)をコードの別のプロパティにバインドしたいと思います。誰か助けてもらえますか?なぜそんなに混乱しているのかわからない。

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 に答える