Je suis totalement confus après avoir essayé de résoudre mon problème pendant plusieurs heures pour moi-même, mais il y a juste trop de points d'interrogation. Peut-être vous pouvez me aider :-)Texte de liaison dans Pivot.HeaderTemplate
Je veux avoir un pivot et de reliure à est, j'ai donc écrit une classe PivotViewModel qui contient un ObservableCollection (CategoryPageList
):
public class PivotViewModel
{
public class CategoryPageList : ObservableCollection<CategoryPage>
{}
private CategoryPageList categoryPages;
public PivotViewModel()
{
categoryPages = new CategoryPageList();
}
public CategoryPageList CategoryPages
{
get { return categoryPages; }
}
}
Le CategoryPageList
est de la Type CategoryPage
, une classe qui contient les données que je veux lier à la « 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");
}
}
}
}
Quand mon application est chargée, je veux voir un PivotItem pour chaque CategoryPa ge avec le "CategoryName" -Property en tant qu'en-tête de ce PivotItem. Avec Expression Blend j'ai créé le XAML code suivant, mais il ne fonctionne pas, le pivot reste vide:
<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>
Le DataContext est lié dans le code dans le constructeur de la page:
public partial class MainPage : PhoneApplicationPage
{
public MainPage()
{
InitializeComponent();
LayoutRoot.DataContext = App.PivotViewModel;
}
}
Je suis un débutant total et je n'ai pas beaucoup d'idée, mais la seule chose que je peux dire, c'est que le XAML en Text="{Binding CategoryPages[0].CategoryName}"
me semble étrange.
Quelqu'un voit-il un bogue? Serait vraiment génial! Cordialement!
Pouvez-vous poster un exemple complet de ce que vous essayez de faire. Je regarde ce que vous avez fait mais il manque de grandes parties que je n'aurais pas à deviner. –