2017-09-04 15 views
0

でのListBoxへのIEnumerableをバインド私は、XAMLでのListBoxにIEnumerableをクラスのUserListをバインドしようとしていますが、私は、オブジェクトの名前を解決することはできませんよ。次のように私のXAMLコードは次のとおりです。WPFはDataTemplateを

  <ListBox DockPanel.Dock="Left" x:Name="UserListBox" Width="400" 
        ItemsSource="{Binding Source={StaticResource userList}}" 
        ItemTemplate="{StaticResource UserListTemplate}"> 

      </ListBox> 

私はUSERLISTは同様MainWindow.xaml.csでインスタンス化しているが、私は右の何かをやっていないんだと思います。意図は、ListBoxをUserListから読み込んで、そのIEnumerableからUsersのリストを作成することです。これをどうやって解決するのですか?

public MainWindow() 
    { 
     InitializeComponent(); 
     DataConnection.CreateAndOpenDB(); 
     src.UserList userList = new src.UserList(); 


    } 

答えて

1

ローカル変数はStaticResource拡張では解決できません。

、以下に示すようUserListのプロパティを作成し、thisにウィンドウのDataContextのセット。 DataContextの設定後に要素を追加または削除できるようにするには、クラスUserListがINotifyCollectionChangedインターフェイスを実装する必要があります。 ObservableCollectionから派生することでそうすることができます。導入のための

ItemsSource="{Binding UserList}" 

参照Data Binding Overview

public src.UserList UserList { get; } = new src.UserList(); 

public MainWindow() 
{ 
    InitializeComponent(); 
    DataConnection.CreateAndOpenDB(); 
    // add elements to UserList here 

    DataContext = this; 
} 

は、このようにXAMLでバインディングを作成します。

関連する問題