2014-03-06 1 views
2

안녕하세요. 저는 Windows Phone 8 앱에서 작업 중입니다. 문제가 발생했습니다. 필자 피봇 항목에 일부 데이터를로드 중입니다. 사용자가 사용자 컨트롤을 탭하면 사용자 컨트롤을 통해 데이터가 수정됩니다. 데이터가 데이터베이스에 성공적으로 저장되고 있지만 피벗 항목이 즉시 업데이트되지 않습니다. 나는 관찰 가능한 수집을 다음과 같이 사용하고있다.xaml UI를 통해 데이터를 업데이트 한 후 피벗 항목의 데이터를 새로 고치는 방법은 무엇입니까?

ObservableCollection에 내가 mypivot.xaml.cs에서 다음과 같이 사용 내가 때라도으로 피벗 페이지 내 피벗 항목에

private void LoadWordbank() 
{ 
     List<MysecondWrapper> dbData = helper.FetchAllName(thisApp.CurrentName.Id); 
    if (dbData.Count != 0) 
    { 
     foreach (MySerconWrapper item in dbData) 
     { 
      saveinfo.Add(new MyWrapper { NameLocalId = item.Id.ToString(), Name= item.Name, NameDescription = item.Description, NameId = thisApp.CurrentName.Id}); 
     } 
    } 
} 

mypivot.xaml 데이터를로드하고 다음과 같이 이제

ObservableCollection<MyWrapper> saveinfo = new ObservableCollection<MyWrapper>(); 
public ObservableCollection<MyWrapper> savedWordBankCollection 
{ get { return saveinfo; } } 

//MyWrapper class structure 

public class MyWrapper: INotifyPropertyChanged 
{ 
    private string desc; 
    public event PropertyChangedEventHandler PropertyChanged; 
    private void NotifyChange(PropertyChangedEventArgs e) 
    { 
     if (PropertyChanged != null) 
      PropertyChanged(this, e); 
    } 
    public string Name { get; set; } 
    public string NameDescription 
    { 
     get { return desc; } 
     set 
     { 
      desc = value; 
      NotifyChange(new PropertyChangedEventArgs("NameDescription")); 
     } 
    } 
    public string NameId { get; set; } 
    public string NameLocId { get; set; } 
} 

파일. 나는 전체 코드를 쓰고있는 것이 아니라 내가 보여주고있는 속성을 어떻게 할당 했는가? 위의 textblocks에서

<TextBlock x:Name="wordbankStored" Grid.Column="0" Grid.Row="0" Text="{Binding Name}"/>        
<Button x:Name="btnWordDescription" Grid.Row="1" Grid.Column="0" Content="{Binding NameDescription}" 
Tag="{Binding}" Click="btnNameDescription_Click"/> 

내가 시도 :

Content="{Binding NameDescription, Mode=TwoWay}" 

하지만 그래서 난 제거한 작동하지 않았다. btnNameDescription_Click 내 사용자 정의 컨트롤이 열리고 wp8의 로컬 db에 데이터를 저장할 수 있지만 즉시 내 피벗에 표시되지 않습니다. 무엇을 어떻게해야합니까? 나는 틀렸다. 도움이 필요하다.

+0

ObservableCollection에 대한 NotifyChange가없는 이유는 무엇입니까? –

+0

ObservableCollection에 대해 NotifyChnage를 사용하고 있습니다. 너는 볼 수있어. –

답변

0

나는 먼저 페이지를 새로 고칠 필요가 없으며 관찰 가능한 컬렉션을 통해 자동으로 처리 할 수 ​​있습니다. 내 observableCollection은 saveInfoCollection입니다.

는 관찰 컬렉션

1) 삭제 관찰 컬렉션에서 항목 세 possiblities있다.

2) 관찰 가능한 수집에서 항목 수정.

3) 관찰 가능한 컬렉션에 항목을 추가하십시오.

Explaination

1) 제가

//savedData is my observableCollection name. 
savedData.Remove(selected); 

2를 다음과 같이 관찰 컬렉션의 제거 방법을 사용하는 관찰 컬렉션에서 항목을 삭제할 때 제 경우) 중 두 번째 경우는 observable 컬렉션에서 항목을 수정할 것입니다. 여기에 observable 컬렉션의 마술이 보일 것입니다. Tag 속성을 사용하여 항목 객체를 가져오고 있습니다. 따라서 데이터베이스를 업데이트 할 것이므로 observable 컬렉션은 au가됩니다. 자동 갱신.

3)이 경우 관찰 가능 컬렉션에 새 데이터 개체를 추가하면 관찰 가능 컬렉션이 자동으로 업데이트됩니다.

observableCollection을 사용하는 경우 페이지를 새로 고칠 필요가없는 것보다. 그것은 ViewModel의 마법입니다.

관련 문제