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()を呼び出さない限り
提案がありますか?ありがとう。
「うまくいかない」というのは少し曖昧ですが、あなたは何を見ていますか、代わりに何を期待しましたか? –
バインディングが一方向であることを指定する必要があります。これは、プロパティにセットがないためです。それが助けになるかどうかは分かりませんが、私はそれを良い方法と考えています。 –
バインドされているコレクションにアイテムがあってもリストボックスアイテムは表示されません。 – Martin