2011-07-28 10 views
0

検索したデータをソートしようとしています。 私は2つのデータ時間と添付タイトルを持っています。 私は時間を並べ替えることができました。 添付されたメモはソートされた配置と調整されませんでした。Windowsの電話機での配列の並べ替え7

例えば、時間 - >宿題8:45 - - >

ソートを作業時間の 時間 8:45宿題 10:50作業保護

タイトル添付> 10:45オーバーライドし、ボイドOnNavigatedTo(System.Windows.Navigation.NavigationEventArgs E)

{ 
     base.OnNavigatedTo(e); 
     selectedFolderName = ""; 

     if (NavigationContext.QueryString.TryGetValue("selectedFolderName", out selectedFolderName)) 
      selectedFolderName1 = selectedFolderName; 



     IsolatedStorageFile myStore = IsolatedStorageFile.GetUserStoreForApplication(); 
     //For time 
     try 
     { 
      StreamReader readFileTime = new StreamReader(new IsolatedStorageFileStream(selectedFolderName1 + "\\time.Schedule", FileMode.Open, myStore)); 
      //For title 
      StreamReader readFileTitle = new StreamReader(new IsolatedStorageFileStream(selectedFolderName1 + "\\title.Schedule", FileMode.Open, myStore)); 
      //For category 
      StreamReader readFileCategory = new StreamReader(new IsolatedStorageFileStream(selectedFolderName1 + "\\category.Schedule", FileMode.Open, myStore)); 


      String timeText = readFileTime.ReadLine(); 
      timeSplit = timeText.Split(new char[] { '^' }); 
      Array.Sort(timeSplit); 

      String titleText = readFileTitle.ReadLine(); 
      titleSplit = titleText.Split(new char[] { '^' }); 


      String categoryText = readFileCategory.ReadLine(); 
      categorySplit = categoryText.Split(new char[] { '^' }); 

     } 
     catch (Exception) 
     { 
      // noScheduleTxt.Visibility = Visibility.Visible; 
     } 



     if (scheduleListBox.Items.Count == 0) 
     { 

      for (int i = 0; i < timeSplit.Length; i++) 
      { 
       string timeList = timeSplit[i]; 
       string titleList = titleSplit[i]; 
       string categoryList = categorySplit[i]; 

       //Define grid column, size 
       Grid schedule = new Grid(); 
       //Column to hold the time of the schedule 
       ColumnDefinition timeColumn = new ColumnDefinition(); 
       GridLength timeGrid = new GridLength(110); 
       timeColumn.Width = timeGrid; 
       schedule.ColumnDefinitions.Add(timeColumn); 


       //Text block that show the time of the schedule 
       TextBlock timeTxtBlock = new TextBlock(); 
       timeTxtBlock.Text = timeList; 
       //Set the alarm label text block properties - margin, fontsize 
       timeTxtBlock.FontSize = 28; 
       timeTxtBlock.Margin = new Thickness(0, 20, 0, 0); 
       //Set the column that will hold the time of the schedule 
       Grid.SetColumn(timeTxtBlock, 0); 
       schedule.Children.Add(timeTxtBlock); 



       //Column to hold the title of the schedule 
       ColumnDefinition titleColumn = new ColumnDefinition(); 
       GridLength titleGrid = new GridLength(300); 
       titleColumn.Width = titleGrid; 
       schedule.ColumnDefinitions.Add(titleColumn); 

       //Text block that show the title of the schedule 
       TextBlock titleTxtBlock = new TextBlock(); 
       titleTxtBlock.Text = titleSplit[i]; 

       if (titleSplit[i].Length > 15) 
       { 
        string strTitle = titleSplit[i].Substring(0, 15) + "...."; 
        titleTxtBlock.Text = strTitle; 
       } 
       else 
       { 
        titleTxtBlock.Text = titleSplit[i]; 
       } 
       //Set the alarm label text block properties - margin, fontsize 
       titleTxtBlock.FontSize = 28; 
       titleTxtBlock.Margin = new Thickness(20, 20, 0, 0); 
       //Set the column that will hold the title of the schedule 
       Grid.SetColumn(titleTxtBlock, 1); 
       schedule.Children.Add(titleTxtBlock); 



       //Column 3 to hold the image category of the schedule 
       ColumnDefinition categoryImageColumn = new ColumnDefinition(); 
       GridLength catImgnGrid = new GridLength(70); 
       categoryImageColumn.Width = catImgnGrid; 
       schedule.ColumnDefinitions.Add(categoryImageColumn); 

       //Text block that show the category of the schedule 
       TextBlock categoryTxtBlock = new TextBlock(); 
       categoryTxtBlock.Text = categorySplit[i]; 

       //set the category image and its properties - margin, width, height, name, background, font size 
       Image categoryImage = new Image(); 
       categoryImage.Margin = new Thickness(-20, 15, 0, 0); 
       categoryImage.Width = 50; 
       categoryImage.Height = 50; 
       if (categoryTxtBlock.Text == "Priority") 
       { 
        categoryImage.Source = new BitmapImage(new Uri("/AlarmClock;component/Images/exclamination_mark.png", UriKind.Relative)); 
       } 
       else 
        if (categoryTxtBlock.Text == "Favourite") 
        { 
         categoryImage.Source = new BitmapImage(new Uri("/AlarmClock;component/Images/star_full.png", UriKind.Relative)); 
        } 


       Grid.SetColumn(categoryImage, 2); 
       schedule.Children.Add(categoryImage); 

       scheduleListBox.Items.Add(schedule); 
      } 


     } 
    } 

答えて

3

問題はあなたの時間の配列ではなく、あなたのTIをソートしている、ありますアレイ。 Time、Title、Categoryという3つのプロパティを持つ新しいクラス "ScheduleItem"を作成するだけです。次に、strongtyped Listを作成し、リストにソートします。

あなたのクラスは、あなたがあなたのファイルからあなたの価値を読んで、このようなあなたのリストを構築することができます。その後、この

public class ScheduleItem : IComparable<ScheduleItem> 
{ 
    public DateTime Time { get; set; } 
    public string Title { get; set; } 
    public string Category { get; set; } 


    public int CompareTo(ScheduleItem item) 
    { 
     return Title.CompareTo(item.Title); 
    } 
} 

のようになります。

if (scheduleListBox.Items.Count == 0) 
{ 

    List<ScheduleItem> scheduleItems = new List<ScheduleItem>(); 
    for (int i = 0; i < timeSplit.Length; i++) 
    { 
     string timeList = timeSplit[i]; 
     string titleList = titleSplit[i]; 
     string categoryList = categorySplit[i]; 

     ScheduleItem item = new ScheduleItem 
           { 
            Time = DateTime.Parse(timeList), 
            Title = titleList, 
            Category = categoryList 
           }; 
     scheduleItems.Add(item); 

    } 

    scheduleItems.Sort(); 
} 

これで、ScheduleItemのリストを繰り返し、コントロールを構築しました。あなたのコードは次のようになります

if (scheduleListBox.Items.Count == 0) 
{ 

    List<ScheduleItem> scheduleItems = new List<ScheduleItem>(); 
    for (int i = 0; i < timeSplit.Length; i++) 
    { 
     string timeList = timeSplit[i]; 
     string titleList = titleSplit[i]; 
     string categoryList = categorySplit[i]; 

     ScheduleItem item = new ScheduleItem 
           { 
            Time = DateTime.Parse(timeList), 
            Title = titleList, 
            Category = categoryList 
           }; 
     scheduleItems.Add(item); 

    } 

    scheduleItems.Sort(); 

    foreach (ScheduleItem item in scheduleItems) 
    { 

     //Define grid column, size 
     Grid schedule = new Grid(); 
     //Column to hold the time of the schedule 
     ColumnDefinition timeColumn = new ColumnDefinition(); 
     GridLength timeGrid = new GridLength(110); 
     timeColumn.Width = timeGrid; 
     schedule.ColumnDefinitions.Add(timeColumn); 


     //Text block that show the time of the schedule 
     TextBlock timeTxtBlock = new TextBlock(); 
     timeTxtBlock.Text = item.Time; 
     //Set the alarm label text block properties - margin, fontsize 
     timeTxtBlock.FontSize = 28; 
     timeTxtBlock.Margin = new Thickness(0, 20, 0, 0); 
     //Set the column that will hold the time of the schedule 
     Grid.SetColumn(timeTxtBlock, 0); 
     schedule.Children.Add(timeTxtBlock); 



     //Column to hold the title of the schedule 
     ColumnDefinition titleColumn = new ColumnDefinition(); 
     GridLength titleGrid = new GridLength(300); 
     titleColumn.Width = titleGrid; 
     schedule.ColumnDefinitions.Add(titleColumn); 

     //Text block that show the title of the schedule 
     TextBlock titleTxtBlock = new TextBlock(); 
     titleTxtBlock.Text = item.Title; 

     if (item.Title.Length > 15) 
     { 
      string strTitle = item.Title.Substring(0, 15) + "...."; 
      titleTxtBlock.Text = strTitle; 
     } 
     else 
     { 
      titleTxtBlock.Text = item.Title; 
     } 
     //Set the alarm label text block properties - margin, fontsize 
     titleTxtBlock.FontSize = 28; 
     titleTxtBlock.Margin = new Thickness(20, 20, 0, 0); 
     //Set the column that will hold the title of the schedule 
     Grid.SetColumn(titleTxtBlock, 1); 
     schedule.Children.Add(titleTxtBlock); 



     //Column 3 to hold the image category of the schedule 
     ColumnDefinition categoryImageColumn = new ColumnDefinition(); 
     GridLength catImgnGrid = new GridLength(70); 
     categoryImageColumn.Width = catImgnGrid; 
     schedule.ColumnDefinitions.Add(categoryImageColumn); 

     //Text block that show the category of the schedule 
     TextBlock categoryTxtBlock = new TextBlock(); 
     categoryTxtBlock.Text = item.Category; 

     //set the category image and its properties - margin, width, height, name, background, font size 
     Image categoryImage = new Image(); 
     categoryImage.Margin = new Thickness(-20, 15, 0, 0); 
     categoryImage.Width = 50; 
     categoryImage.Height = 50; 
     if (categoryTxtBlock.Text == "Priority") 
     { 
      categoryImage.Source = new BitmapImage(new Uri("/AlarmClock;component/Images/exclamination_mark.png", UriKind.Relative)); 
     } 
     else 
      if (categoryTxtBlock.Text == "Favourite") 
      { 
       categoryImage.Source = new BitmapImage(new Uri("/AlarmClock;component/Images/star_full.png", UriKind.Relative)); 
      } 


     Grid.SetColumn(categoryImage, 2); 
     schedule.Children.Add(categoryImage); 
    } 

} 
+0

ごめんなさい、どういう意味ですか?私は例がありますか? –

+0

私の投稿を編集するだけです。うまくいけば – Mariusz

+0

私は自分のコードを編集し、上に投稿しました。編集したものが正しいですか? –