2016-11-08 8 views
0

두 페이지가 있습니다. 첫 번째 페이지는 mainpage.xaml이고 두 번째 페이지는 favoriteslist.xaml입니다.버튼 클릭시 즐겨 찾기 목록에 텍스트 블록 텍스트 추가

mainpage.xaml 나는 동적 텍스트를 자동으로 보여주는 텍스트 블록을 가지고 있습니다.

그리고 mainpage.xaml에도 버튼이 있습니다.

해당 버튼을 클릭하면 텍스트 블록에 텍스트가 표시되고 원하는 페이지는 favoriteslist.xaml 페이지로 이동해야합니다.

텍스트가 이미 즐겨 찾기 인 경우 텍스트 블록에 나타나는 텍스트는 버튼 클릭시 즐겨 찾기 목록에서 제거해야합니다.

그래서 마지막으로 동적으로 이미 만든이 기능을 구현하는 데 도움이 필요하지만 기능을 개발하는 방법을 알고 싶을뿐입니다.

TextBlock의 :

<TextBlock x:Name="StringTextBlock" Text="" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}" /> 

버튼 :

<Button Grid.Row="2" x:Name="AddToFavoritesButton" 
    Content="Add" Style="{StaticResource ButtonStyle2}" Margin="2" 
    Click="AddToFavoritesButton_Click"/> 

C#을

private void AddToFavoritesButton_Click(object sender, RoutedEventArgs e) 
{ 
} 

목록 상자 :

<ListBox x:Name="FavoriteListBox" /> 
+0

가능한 경우 수행 할 샘플을 제공하십시오. –

답변

1

IsolatedStorageSettings를 사용하여 목록을 저장하고 버튼 클릭시 isolatedstoragesettings의 목록에 동적 텍스트를 비교합니다. 이어서 FavouritesList 페이지에서 IsolatedStorageSettings.So의리스트 목록 상자 itemsource 설정 여기 따라야하는 단계는 : 1 텍스트 블록에 표시되는 동적 텍스트를 설정하기위한 모델/클래스를 생성

public class favourites 
{ 
    public string myText { get; set; } 
} 

2. MainPage.xaml.cs의 버튼 클릭 이벤트에서 먼저 동적 텍스트 (필요한 경우)를 텍스트 블록으로 설정 한 다음 목록을 작성한 다음 비교를 수행하거나 비교하십시오.

private void AddToFavoritesButton_Click(object sender, RoutedEventArgs e) 
    { 
     //your dynamic text set to textblock 
     StringTextBlock.Text = myDynamicText; 

     //Set value of your text to member variable of the model/class 
     favourites f = new favourites(); 
     f.myText = myDynamicText; 

     IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings; 

     /*Check if "FavouritesList" key is present in IsolatedStorageSettings 
      which means already a list had been added. If yes, retrieve the 
      list, compare each item with your dynamic text, add or remove 
      accordingly and replace the new list in IsolatedStorageSettings 
      with same key. */ 

     if (settings.Contains("FavouritesList")) 
     { 
      List<favourites> l = (List<favourites>)settings["FavouritesList"]; 
      for(int i = 0; i <= l.Count()-1; i++) 
      { 
       if (l[i].Equals(myDynamicText)) 
       { 
        l.RemoveAt(i); 
        settings["FavouritesList"] = l; 
       } 
       else 
       { 
        l.Add(f); 
        settings["FavouritesList"] = l; 
       } 
      }   
     } 

     //If no key in IsolatedStorageSettings means no data has been added 
     //in list and IsolatedStorageSettings. So add new data 

     else 
     { 
      List<favourites> l = new List<favourites>(); 
      l.Add(f); 
      settings["FavouritesList"] = l; 
     } 
     settings.Save(); 
    }  

이제 FavouritesList 페이지에 항상 업데이트 된 목록이 표시됩니다. 목록에 아무것도 없을 때 표시되어야하는 'NoData'텍스트 블록을 추가했습니다. 그렇지 않으면 목록이 표시됩니다.

IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings; 
     if (settings.Contains("FavouritesList")) 
     { 
      List<favourites> l = (List<favourites>)settings["FavouritesList"]; 
      if(l.Count!= 0) 
      { 
       NoData.Visibility = System.Windows.Visibility.Collapsed; 
       FavoriteListBox.Visibility = System.Windows.Visibility.Visible; 
       FavoriteListBox.ItemsSource = l; 
      }     
     } 

     else 
     { 
      FavoriteListBox.Visibility = System.Windows.Visibility.Collapsed;     
      NoData.Visibility = System.Windows.Visibility.Visible; 
     } 

FavouritesList.xaml.cs

에서 FavouritesList.xaml

<ListBox x:Name="FavoriteListBox" Visibility="Collapsed"> 
      <ListBox.ItemTemplate> 
       <DataTemplate> 
        <TextBlock Text="{Binding myText}"/> 
       </DataTemplate> 
      </ListBox.ItemTemplate> 
     </ListBox> 

     <TextBlock Name="NoData" 
        Text="No Data" 
        Visibility="Collapsed" 
        Width="50" 
        Height="50"/> 

에서 나는이 시험하지 않았다하지만 확실히 작동합니다. 희망이 도움이됩니다!

+0

괜찮습니까? 고마워요 –

+0

모든 것이 올바르게 작동하지만 제일 좋아하는 첫 번째 텍스트는 favoritelist.xaml에서 즐겨 찾기 목록으로 이동하지만 마음에 드는 다음 텍스트 응용 프로그램이 멈추거나 멈 추면 –

+0

응용 프로그램 디버깅을 시도 했습니까? 문제가 발생한 곳 – user5434084