Эмуляторы, обеспечивающие разные результаты
Я разрабатываю приложение на Windows Phone с версией 7.1, установленной в качестве целевой сборки. Проблема, которую я имею, состоит в том, что одно из списков на одной из моих страниц отказывается отображать.
Я отладил, чтобы убедиться, что список анализируется с содержимым внутри него. Также приложение работает нормально, когда я использую эмулятор Windows 8. Но та же методика, используемая при заполнении других списков просмотра на других страницах приложения, прекрасно работает на всех эмуляторах aprt с этой единственной страницы, которая не отображается.
Я даже попытался установить цвет панели стека привязок, чтобы увидеть, будет ли он отображаться, но без содержимого. Я действительно запутался, и мой код очень совершенен. Интересно, кто-нибудь уже сталкивался с этой проблемой с эмуляторами Windows Phone?
private void countdownClient_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
HtmlDocument doc = new HtmlDocument();
if (e.Error != null)
{
//MessageBox.Show(e.Error.InnerException.Message + "\n Ensure You Have A Working Internet Connection");
return;
}
doc.LoadHtml(e.Result);
String noCountdown = "<div><span>Sorry no buses are expected within 30 minutes of this stop. Please try again later or go to www.tfl.gov.uk</span></div>";
if (e.Result.Contains(noCountdown))
{
//No Buses Expected;
return;
}
else
{
HtmlNode stopCountdownNode;
try
{
stopCountdownNode = doc.DocumentNode.SelectSingleNode("//*[contains(@id, 'stopBoard')]").SelectSingleNode("tbody");
}
catch (Exception)
{
MessageBox.Show("Error Responce From Server");
return;
}
if (stopCountdownNode != null)
{
HtmlNodeCollection countdownNodeList = stopCountdownNode.SelectNodes("tr");
CountDownListBox.ItemsSource = GetCountdownList(countdownNodeList);
}
}
}
private ObservableCollection<BusCountdown> GetCountdownList(HtmlNodeCollection countdownNodeList)
{
ObservableCollection<BusCountdown> countdownList = new ObservableCollection<BusCountdown>();
foreach (HtmlNode countDown in countdownNodeList)
{
String busName = HttpUtility.HtmlDecode(countDown.SelectSingleNode("*[contains(@class, 'resRoute')]").InnerHtml);
String busDestination = HttpUtility.HtmlDecode(countDown.SelectSingleNode("*[contains(@class, 'resDir')]").InnerHtml);
String countDownTime = HttpUtility.HtmlDecode(countDown.SelectSingleNode("*[contains(@class, 'resDue')]").InnerHtml);
countdownList.Add(new BusCountdown(busName, busDestination, countDownTime));
}
return countdownList;
}
public string GetRandomSlash()
{
Random r = new Random();
String slash = "";
int rand = r.Next(1, 20);
for (int i = 0; i < rand; i++)
{
slash += "/";
}
return slash;
}
2 ответа
Попробуйте установить свой спецификатор доступа к классу, который вы используете, чтобы привязать к общему и попробовать. Дайте мне знать, если это работает.
Например:
public class Bindingclass
{
public string Name{get;set;}
}
- Попробуйте использовать Expression Blend, а также удалите предыдущий файл решения и создайте новое решение.
- Также правильно установите свойство действия сборки для всех страниц.
- Обновите ваш SDK до версии 7.8. Вы получите несколько вариантов для Эмуляторов - Эмулятор 7,1 (256 МБ), Эмулятор 7,1 (512 МБ), Эмулятор 7,8 (256 МБ), Эмулятор 7,8 (512 МБ). Протестируйте его на всех этих версиях и проверьте вывод на каждом типе эмулятора.
Я надеюсь, что хотя бы один из них поможет вам начать работать. Дайте нам знать.