Я совершенно сбит с толку, пытаясь решить свою проблему в течение нескольких часов для себя, но слишком много вопросительных знаков. Может быть, вы можете помочь мне: -)
Я хочу иметь сводную таблицу и привязывать элементы к is, поэтому я написал класс PivotViewModel, который содержит ObservableCollection (CategoryPageList
):
public class PivotViewModel
{
public class CategoryPageList : ObservableCollection<CategoryPage>
{}
private CategoryPageList categoryPages;
public PivotViewModel()
{
categoryPages = new CategoryPageList();
}
public CategoryPageList CategoryPages
{
get { return categoryPages; }
}
}
CategoryPageList
имеет тип CategoryPage
, класс, который содержит данные, с которыми я хочу связать, "CategoryName":
public class CategoryPage : INotifyPropertyChanged
{
private string categoryName;
public CategoryPage(string categoryName)
{
CategoryName = categoryName;
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
public string CategoryName
{
get { return categoryName; }
set
{
if (categoryName != value)
{
categoryName = value;
NotifyPropertyChanged("CategoryName");
}
}
}
}
Когда мое приложение загружено, я хочу видеть PivotItem для каждой CategoryPage с «CategoryName» -Property в качестве заголовка этого PivotItem.
С помощью Expression Blend я создал следующий XAML-код, но он не работает, Pivot остается пустым:
<Grid x:Name="LayoutRoot" Background="Transparent">
<Grid.DataContext>
<RssReader_ViewModel:PivotViewModel/>
</Grid.DataContext>
<controls:Pivot Title="pivot" ItemsSource="{Binding CategoryPages}">
<controls:Pivot.Resources>
<DataTemplate x:Key="CategoryPivotItemHeaderTemplate">
<TextBlock TextWrapping="Wrap" Text="{Binding CategoryPages[0].CategoryName}"/>
</DataTemplate>
<DataTemplate x:Key="CategoryPivotItemTemplate">
<Grid>
<ListBox/>
</Grid>
</DataTemplate>
</controls:Pivot.Resources>
<controls:Pivot.ItemTemplate>
<StaticResource ResourceKey="CategoryPivotItemTemplate"/>
</controls:Pivot.ItemTemplate>
<controls:Pivot.HeaderTemplate>
<StaticResource ResourceKey="CategoryPivotItemHeaderTemplate"/>
</controls:Pivot.HeaderTemplate>
<controls:Pivot.DataContext>
<RssReader_ViewModel:PivotViewModel/>
</controls:Pivot.DataContext>
</controls:Pivot>
</Grid>
DataContext связан в коде в конструкторе страницы:
public partial class MainPage : PhoneApplicationPage
{
public MainPage()
{
InitializeComponent();
LayoutRoot.DataContext = App.PivotViewModel;
}
}
Я абсолютный новичок и не очень разбираюсь, но могу сказать лишь одно: в XAML Text="{Binding CategoryPages[0].CategoryName}"
выглядит странно для меня.
Кто-нибудь видит ошибку? Было бы действительно здорово!
С наилучшими пожеланиями!