5

2 つのプロパティを持つ名前の単純なクラスがありCustomerます。次に、 Customers という名前のパブリック プロパティを 1 つだけ持つ という名前のコレクション クラスを作成しました。
public Name {get;set;}
public LastName {get;set}

CustomerList

public class CustomerList
{
    public List<Customer> Customers { get; set; }

    public CustomerList()
    {
        Customers = new List<Customer>();
        Customers.Add(new Customer() { Name = "Foo", LastName = "Bar" });
        Customers.Add(new Customer() { Name = "Foo1", LastName = "Bar1" });
    }
}

このクラスを XAML の静的リソースとして使用したいと考えています。

  <UserControl.Resources> 
  <customers:CustomerList x:Key="CustomersKey">
  </UserControl.Resources>

そしてそれをListBoxで使用します

 <ListBox x:Name="lvTemplate" ItemsSource="{Binding Source={StaticResource CustomersKey}}">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <StackPanel>
                    <TextBox Text="{Binding Name}"/>
                    <TextBox Text="{Binding LastName}"/>
                </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

コード ビハインドで ItemsSource を設定すると、クラスをインスタンス化した後、すべて正常に動作します。XAML と静的リソースから設定しようとすると、何も起こりません。{Binding Path=Customer.Name}またはを使用しても違い{Binding Path=Name}ます。

明らかに何かが恋しい…

4

1 に答える 1

5

CustomerList は実際には項目のリストではない (IEnumerable を実装していない) ため、ItemsSource として使用するオブジェクト内のプロパティを指定する必要があります。

<ListBox ItemsSource="{Binding Path=Customers, Source={StaticResource CustomersKey}}">
于 2011-02-28T20:03:24.817 に答える