Я использую расширение Expander в моей главной странице, которая привязана к коллекции «Категории аккаунта» (каждый элемент в этой коллекции содержит также коллекцию учетных записей)Коллекция Привязка к расширенному представлению не будет обновляться при добавлении новых элементов
Привязки все работают нормально, но с небольшим сбоем. Существует еще одна страница, где пользователь может добавлять новые учетные записи (таким образом, меняя учетные записи & Категории учетных записей) теперь, когда я перехожу на главную страницу, элемент управления Expander не показывает обновленные значения?
Связывание производится на OnNavigatedTo случае главной страницы Файл контекста База данных генерируется Sql Metal инструмент (подробнее об этом здесь Using SQl Metal to generate DB files for wp7)
Это означает, что все мои классы реализуют INotifyChanging & INotifyChangedEvents
Вот XAML & C# код
private WalletDataContext context;
private ObservableCollection<AccountCategory> _accountCategories;
public ObservableCollection<AccountCategory> AccountCategories
{
get { return _accountCategories; }
set
{
if (_accountCategories != value)
{
_accountCategories = value;
NotifyPropertyChanged("AccountCategories");
}
}
}
public MainPage()
{
InitializeComponent();
//Initialize Data context
context = new WalletDataContext(WalletDataContext.DBConnectionString);
//Set page data context
this.DataContext = this;
}
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
//fetch all existing Account Categories
var accountCategoriesInDB = (from AccountCategory acctCat in context.AccountCategory
select acctCat);
//Update Page Collection
AccountCategories = new ObservableCollection<AccountCategory>(accountCategoriesInDB);
this.listBox.ItemsSource = AccountCategories;
base.OnNavigatedTo(e);
}
Вот XAML привязки
<ListBox Grid.Row="0" x:Name="listBox">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<toolkit:ExpanderView Header="{Binding}" Expander="{Binding}"
ItemsSource="{Binding Accounts}"
HeaderTemplate="{StaticResource CustomHeaderTemplate}" ExpanderTemplate="{StaticResource CustomExpanderTemplate}">
<toolkit:ExpanderView.ItemTemplate>
<DataTemplate>
<Grid VerticalAlignment="Center" Height="Auto">
<Grid.RowDefinitions>
<RowDefinition Height="0.105*"/>
<RowDefinition Height="0.105*"/>
<RowDefinition Height="0.789*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.366*"/>
<ColumnDefinition Width="0.634*"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Text="{Binding AccountNumber}" Style="{StaticResource PhoneTextNormalStyle}" VerticalAlignment="Center" HorizontalAlignment="Left"></TextBlock>
<TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding Balance}" Style="{StaticResource PhoneTextSubtleStyle}" VerticalAlignment="Center" HorizontalAlignment="Left"></TextBlock>
</Grid>
</DataTemplate>
</toolkit:ExpanderView.ItemTemplate>
</toolkit:ExpanderView>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Любые идеи о том, что случилось? Спасибо за помощь.
«Убедитесь, что вы сохранили/пометили обновленные данные в контексте на странице« Добавить новую учетную запись ». Я сохраняю данные на странице« Добавить новую учетную запись ». Но когда я вернусь на главную страницу, вновь введенная запись просто не видна. – Supreet
Не могли бы вы показать код, который сохраняет данные? –
Ребята, пожалуйста, помогите здесь ... его вид на голове теперь. :(Спасибо – Supreet