いくつかの MVVM をテストする Windows Phone 7 プロジェクトのサンプルがありますが、問題が発生しました。
私のコードは次のようになります。
これは、MainPage である私のビューからのものです。
<Grid>
<ListBox x:Name="list" ItemsSource="{Binding _reviews}"/>
</Grid>
これは、View のコード ビハインドです。
public MainPage()
{
this.Loaded += MainPage_Loaded;
// Line below makes list show what it is supposed to show
// list.ItemsSource = (DataContext as MainPageVM)._reviews;
DataContext = new MainPageVM();
InitializeComponent();
}
void MainPage_Loaded(object sender, RoutedEventArgs e)
{
// DataContext is set to the right object!
var obj = list.DataContext;
}
ViewModel のコード
class MainPageVM
{
public ObservableCollection<Review> _reviews { get; set; }
public MainPageVM()
{
_reviews = GetReviews();
}
private ObservableCollection<Review> GetReviews()
{
ObservableCollection<Review> reviews = new ObservableCollection<Review>();
reviews.Add(new Review() { User = "Lol", Text = "Cool", Country = "UK"});
reviews.Add(new Review() { User = "misterX", Text = "aWESCOM APP", Country = "USA"});
reviews.Add(new Review() { User = "meYou", Text = "The best", Country = "UK"});
return reviews;
}
そして、ここに私のモデルがあります:
class Review
{
public string Text { get; set; }
public string User { get; set; }
public string Country { get; set; }
}
エラーの場所と、コード ビハインドで ItemSource を設定できるのに、XAML でのバインディングでは設定できない理由を指摘してください。