2016-05-13 8 views
0

で動作します。 (下の最後のコードThe final and working exampleを確認してください) http://www.wpf-tutorial.com/data-binding/responding-to-changes/のItemsSourceが唯一の私は、この例で遊んでいるコードビハインド

彼はlbUsers.ItemsSource = users;権利との結合をしているコードでは? Imはコードビハインドの代わりにxamlでバインディングを実行しようとしています。

<ListBox Name="lbUsers" DisplayMemberPath="Name" ItemsSource = {Binding users}></ListBox> 

しかし、これは機能しません。 WPF ItemsSource works in code-behind but not in XAML それでもが

+0

_your_ 'users'リストはどこから来ますか?コントロール/ページのコードビハインドでそれを設定していますか?または、ViewModelを使ってコントロールの 'DataContext'をバインドしていますか?あなたの質問は、コードビハインド(他の誰かの 'users'リストを例に挙げています)を大まかに暗示しています。あなたは明確にできますか? –

+0

XAMLバインディングで 'ItemsSource'を設定する必要がありますか?チュートリアルの直後であれば、そのコードで十分です。コードの使用を拡張し、ユーザーにバインドしてより多くのことを行うViewModelを持っているとしましょう。それはちょっと違う--HBの答えを見てMVVMに関する少しの研究をしてください:) –

+0

ちょっとええ、私はコードが動作することを知っていますが、MVVMをやりたがっているので、最初にバインドして遊んでいます。ユーザーリストについてはチュートリアルコード(ページの一番下)と同じです。私がしようとするすべてのことは、コードの背後にあるのではなく、xamlのバインドを行うことです。そのため、結局はviewModelクラスのリストにバインドできます。私は正直言って一日の読書を費やしていましたが、無駄な努力をしていましたが、もしあなたがそれを感謝してくれたら、私はそれを感謝します – user1294510

答えて

3
private ObservableCollection<User> users = new ObservableCollection<User>(); 

私の問題を理解することができませんでしたあなたはこれだけで、パブリックプロパティに特異的に結合することができます。そして、私は、DataContextのを追加することが、まだそれは私がこの記事を読んで

を働いていない試してみましたプライベートフィールドdata binding overviewをお読みください。

また、failing bindings can be debugged

+1

あなたは正しいです。 OPが「private」/「public」を参照していること、2. OPが「DataContext」を正しく設定していること、そしてfrom(Selfなど) ViewModelなどから) –

+1

@GeoffJames:他にも数多くの間違いがありますが、それらをすべてカバーすることはできません。なぜなら、OPがその理由でバインディングシステムをよく理解しているのがベストです。 –

+0

他の潜在的な原因が絶対に読み込まれたり読み込まれたりしています。私はあなたの側にいます - プライベートフィールド/パブリックメンバーの名前を付けることで有名になっているような命名規則に基づいています - 時間だけ(そしてOP)が教えてくれると思います... –

関連する問題