- Page1 создает и привязывает данные к новому экземпляру Foo (назовите его theFoo)
- theFoo.Name задается через текстовое поле из Page1
- theFoo сохраняется в глобально доступных данныхструктура (список Foos, что угодно)
- переход от страницы 1 к странице 2
- Page2 привязывает к глобальному списку Foos, чтобы отобразить все экземпляры Foo
Когда яСделав это, я могу убедиться, что экземпляр Foo добавлен в глобальный список.Но Page2 никогда не показывает Foos.
Если я вручную добавлю Foos в глобальный список (в коде, а не из Page1), а затем перейду к Page2, вообще не переходя к Page1, я вижу, что Foos отображается на Page2.
В чем здесь проблема?
Обновление:
Вот некоторый соответствующий код ...
Item.cs (Данные и глобальная структура хранения)
public class Item
{
public string Name { get; set; }
}
internal static class ItemRepos
{
private static List<Item> _items = new List<Item>();
public static Item New()
{
return new Item();
}
public static int Count
{
get { return _items.Count; }
}
public static IEnumerable<Item> GetAll()
{
return _items;
}
public static Item Get( string name )
{
return _items.SingleOrDefault( item => item.Name == name );
}
public static void Save( Item item )
{
if ( _items.Contains( item ) == false )
{
_items.Add( item );
}
}
public static void Remove( Item item )
{
_items.Remove( item );
}
}
Соответствующий фрагмент Page1.xaml
<TextBlock Text="Name:"
Grid.Row="0"
Grid.Column="0"
HorizontalAlignment="Right"
VerticalAlignment="Center"
Margin="5" />
<TextBox x:Name="txtName"
Grid.Row="0"
Grid.Column="1"
HorizontalAlignment="Stretch"
VerticalAlignment="Center"
Text="{Binding Name}" />
Page1.xaml.cs
public partial class ItemDetail : PhoneApplicationPage
{
public ItemDetail()
{
InitializeComponent();
}
protected override void OnNavigatedTo( NavigationEventArgs e )
{
base.OnNavigatedTo( e );
this.DataContext = ItemRepos.New();
}
private void Nav( object sender, EventArgs e )
{
NavigationService.Navigate( new Uri( "/Page2.xaml", UriKind.RelativeOrAbsolute ) );
}
private void Save( object sender, EventArgs e )
{
ItemRepos.Save( (Item) this.DataContext );
}
}
Соответствующий фрагмент Page2.xaml
<controls:PivotItem Header="A-Z">
<ListBox x:Name="listAZ"
ItemsSource="{Binding}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</controls:PivotItem>
Page2.xaml.cs
public partial class ViewItems : PhoneApplicationPage
{
public ViewItems()
{
InitializeComponent();
}
protected override void OnNavigatedTo( NavigationEventArgs e )
{
base.OnNavigatedTo( e );
this.DataContext = ItemRepos.GetAll();
}
}