WP7 передает значение из подмассива на новую страницу
Я передаю несколько значений с одной страницы на другую. Одно из значений находится в подмассиве. Потому что может быть несколько Artist
значения в массиве, которые я хочу сказать, если число больше единицы, передайте "Разные исполнители", в противном случае передайте одно значение художника. Вот что у меня так далеко.
Вот мои занятия
public class RootObject
{
//public MetadataRelease metadata { get; set; }
public Results results = new Results();
public IEnumerator<Results> GetEnumerator()
{
return this.results.GetEnumerator();
}
}
public class Results
{
public Release release { get; set; }
public List<Track> tracks { get; set; }
//public List<UsersAlsoBought2> usersAlsoBought { get; set; }
//public List<LatestFromLabel2> latestFromLabel { get; set; }
internal IEnumerator<Results> GetEnumerator()
{
throw new NotImplementedException();
}
}
public class Track
{
public int id { get; set; }
public bool selected { get; set; }
public string type { get; set; }
public string name { get; set; }
public bool active { get; set; }
public string mixName { get; set; }
public string title { get; set; }
public string slug { get; set; }
public string isrc { get; set; }
public string releaseDate { get; set; }
public string publishDate { get; set; }
public string sampleUrl { get; set; }
public string rtmpStreamUrl { get; set; }
public bool exclusive { get; set; }
public Price2 price { get; set; }
public AudioFormatFee2 audioFormatFee { get; set; }
public string currentStatus { get; set; }
public string length { get; set; }
public int bpm { get; set; }
public Key key { get; set; }
public string saleType { get; set; }
public List<Artist2> artists { get; set; }
public List<Genre2> genres { get; set; }
public List<object> subGenres { get; set; }
public List<object> charts { get; set; }
public Release2 release { get; set; }
public Label2 label { get; set; }
public Images2 images { get; set; }
public DynamicImages2 dynamicImages { get; set; }
}
public class Artist2
{
public int id { get; set; }
public string name { get; set; }
public string slug { get; set; }
public string type { get; set; }
}
Код для извлечения данных из выбранного элемента.
public void musicSampleSelectedHandler(object sender, RoutedEventArgs e)
{
Track selectedTrack = (sender as Image).DataContext as Track;
ListBoxItem pressedItem = this.listReleaseMain.ItemContainerGenerator.ContainerFromItem(selectedTrack) as ListBoxItem;
if (pressedItem != null)
{
string _rN = selectedTrack.release.name;
string _rT = selectedTrack.title;
string _rS = selectedTrack.sampleUrl;
string _rI = selectedTrack.images.large.url;
string _rA;
if (selectedTrack.artists.Count > 1)
{
_rA = "Various Artists";
}
else
{
for (int i = 0; i <= selectedTrack.artists.Count - 1; i++)
_rA += "," + selectedTrack.artists[i].name;
}
this.NavigationService.Navigate(new Uri("/Pages/MediaPage.xaml?releaseUrl=" + _rS + "&releaseTrack=" + _rT + "&releaseImg=" + _rI + "&releaseName=" + _rN + "&releaseArtist=" + _rA, UriKind.Relative));
}
}
ОБНОВИТЬ
Я теперь получаю "использование неназначенной локальной переменной _ra
"в течение цикла
1 ответ
Это потому, что вы объявляете _rA внутри оператора if/else. Вы должны объявить _rA вне if/else вместе с другими объявлениями.
Пара вопросов...
не должны string _rA = selectedTrack.artists.name
быть string _rA = selectedTrack.artists[i].name
?
if (selectedTrack.artists.Count > 1)
{
string _rA = "Various Artists";
}
else
{
for (int i = 0; i <= selectedTrack.artists.Count; i++)
{
string _rA = selectedTrack.artists.name; //Unable to access name vaule here
}
}
Разве вышесказанное не должно быть:
string _rA;
if (selectedTrack.artists.Count > 1)
{
for (int i = 0; i <= selectedTrack.artists.Count; i++)
_rA += "," + selectedTrack.artists[i].name;
}
else
{
_rA = "Various Artists";
}