2012-01-31 4 views
0

내 메인 페이지에서 익스팬더 뷰를 사용하고 있습니다. "계정 카테고리"컬렉션에 바인딩됩니다 (이 컬렉션의 각 아이템은 더 많은 계정 모음을 가지고 있습니다)콜렉션 확장하기 위해 바인딩 새로운 아이템이 추가되었을 때 뷰가 업데이트되지 않습니다

바인딩은 모두 잘 작동하지만 작은 결함이 있습니다. 사용자가 새 페이지를 추가 할 수있는 또 다른 페이지가 있습니다 (따라서 계정 변경 & 계정 카테고리). 이제 메인 페이지로 돌아 가면 확장기 컨트롤에 업데이트 된 값이 표시되지 않습니까?

는 데이터베이스 컨텍스트 파일 (여기 Using SQl Metal to generate DB files for wp7이에 대한 자세한)는 SQL 금속 도구 에 의해 생성되는 메인 페이지 의 OnNavigatedTo 이벤트에서 수행 바인딩

내 모든 클래스가 & INotifyChangedEvents

을 INotifyChanging 구현할 의미

여기 여기

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있는 XAML & C# 코드이다 바인딩

<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> 

어떤 아이디어가 잘못 되었나요? 미리 도움을 주셔서 감사합니다.

답변

0

MainPage는 OnNavigatedTo 메서드의 컨텍스트에서 데이터를 다시로드합니다.

새 계정 추가 페이지의 컨텍스트에 업데이트 된 데이터를 저장/표시했는지 확인하십시오.

+0

"새 계정 추가 페이지의 컨텍스트에 업데이트 된 데이터를 저장/표시하십시오."새 계정 추가 페이지에 데이터를 저장하고 있습니다. " 그러나 메인 페이지로 되돌아 가면 새로 입력 한 레코드는 보이지 않습니다. – Supreet

+0

데이터를 저장하는 코드를 보여줄 수 있습니까? –

+0

얘들 아, 여기 좀 도와주세요. 내 머리를 쓰는 일종의 ... :(감사합니다. – Supreet