2012-04-18 11 views
2

ObservableCollectionをListBoxにバインドしようとしています。 デバッグからの出力にはバインドエラーは表示されませんが、なんらかの理由で動作しません。WPFバインディングObservableCollectionからListBoxへ

XAML:

<Window 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:local="clr-namespace:nwsfeed" 
x:Class="nwsfeed.MainWindow" 
DataContext="{Binding RelativeSource={RelativeSource Self}}" 
x:Name="Window"> 

    <ListBox x:Name="listBoxChannels" 
    ItemsSource="{Binding ElementName=Window, Path=App.ActiveProfile.Feeds}" 
    DisplayMemberPath="Title"/> 

</Window> 

コード:

public partial class MainWindow : Window { 
    public NwsfeedApp App { get; set; } 
    // .. 
} 

public sealed class NwsfeedApp { 
    public UserProfile ActiveProfile { get; set; } 
    //.. 
} 

public class UserProfile { 
    private ObservableCollection<RSSFeed> feeds; 
    public ObservableCollection<RSSFeed> Feeds { get { return feeds; } } 
    //.. 
} 

編集: 問題は、それは、私がメインウィンドウのパブリックプロパティとしてのObservableCollectionを持っているとき、私はこのようにそれを結合することです作品:

ItemsSource="{Binding ElementName=Window, Path=Items, Mode=OneWay}" 

B ActiveProfile、私はアプリケーションでINotifyPropertyChangedのを実装しました

ItemsSource="{Binding ElementName=Window, Path=App.ActiveProfile.Feeds, Mode=OneWay}" 

EDIT2 とプロパティをフィード:私はこれを行うときUTは、それはしていません。 ListBoxはコレクションの変更を反映しません.Items.Refresh()を呼び出さない限り

提案がありますか?ありがとう。

+0

「うまくいかない」というのは少し曖昧ですが、あなたは何を見ていますか、代わりに何を期待しましたか? –

+0

バインディングが一方向であることを指定する必要があります。これは、プロパティにセットがないためです。それが助けになるかどうかは分かりませんが、私はそれを良い方法と考えています。 –

+0

バインドされているコレクションにアイテムがあってもリストボックスアイテムは表示されません。 – Martin

答えて

1

あなたのクラスにINotifyPropertyChangedを実装してください。あなたのウィンドウの分離コード内でインスタンス変数ではない静的なアプリケーションプロパティがあるAppにアクセスしようとしている

:情報不足で

+0

これはバインディングの問題に対して定期的に正しい答えですが、この問題は解決しません。 ObservableCollectionは追加のINPC実装を必要としません。 –

+1

あなたはINotifyPropertyChangedが必要ですか?私はバインディングがまだ機能していると思っていたでしょう。 –

+0

@ExitMusic正確には、私はこれが問題を解決しないと言った理由です。 –

0

は、ここでは暗闇の中でのショットです。 Appが見つからないため、バインディング内の残りのプロパティパスは評価されません。不足している出力の場合

ItemsSource="{x:Static local:App.ActiveProfile.Feeds}" 

、あなたが利用できるWPFに多かれ少なかれ情報トレースを確認するためのオプションを持っているがTools->Options->Debugging->Output window->WPF Trace Settingsを試してみてください。

は、あなたはおそらくこれが欲しいです。

HTH、

Bab。

+0

アプリは静的ではありません。 MainWindowのNwsfeedApp型のプロパティです。 – LPL

+0

MainWindowのコードビハインドを表示できますか? –

関連する問題