Web リクエストを解析する MedinetParse という名前のカスタム クラスを作成しました。解析されたデータは、メイン ページの mittSchemaListBox という名前のリスト ボックスに表示されます。私が今直面している問題は、MedinetParse という名前のカスタム クラスに解析メソッドを記述した場合、リスト ボックスに何も表示されないことです。parse メソッド内のコードの最後の行にブレークポイントを配置すると、mittSchemaListBox.ItemsSource にすべての解析済みアイテムがあることがわかります。一方、解析メソッドを MainPage.xaml.cs に移動すると、解析されたすべての項目がリスト ボックスに表示されます。
ここに私の MedinetParsing クラスがあります
namespace WindowsPhonePanoramaApplication1
{
public class MedinetParsing : MainPage
{
//Defining class properties
public string Placering { get; set; }
public string Datum { get; set; }
//Defining class methods
public void parseResults(string myresponse)
{
if (string.IsNullOrEmpty(myresponse))
{
return;
}
//Initiating a listbox and add item to it
List<ItemViewModel> mittSchemaList = new List<ItemViewModel>();
//Using HtmlAgilityPack to parse the HTMLcode from the response
HtmlDocument htdoc = new HtmlDocument();
htdoc.LoadHtml(myresponse);
foreach (HtmlNode table in htdoc.DocumentNode.SelectNodes("//table[@class='list-medium']/tbody[1]/tr[@class]"))
{
//Removing ChildNode
table.ChildNodes.RemoveAt(3);
string itemValue = table.InnerText;
//Changing the parsed date into a DateTime
string d;
DateTime datum = DateTime.Parse(itemValue.Remove(11));
d = datum.ToString("D");
//Adding items to the listbox
mittSchemaList.Add(new ItemViewModel() { Datum = d, Placering = itemValue.Remove(0, 15) });
}
mittSchemaListBox.ItemsSource = mittSchemaList;
}
}
}
解析を開始するコードは次のとおりです:-
public void MainPage_Loaded(object sender, RoutedEventArgs e)
{
if (!App.ViewModel.IsDataLoaded)
{
App.ViewModel.LoadData();
}
MedinetWebRequest mittschema = new MedinetWebRequest();
MedinetParsing mittparse = new MedinetParsing();
mittschema.url = "https://medinet.se/cgi-bin/doctor.pl?action=login&customer=******&language=se";
Action callback = () => Dispatcher.BeginInvoke(() => mittparse.parseResults(mittschema.myresponse));
mittschema.getrequest(callback);
}
そして最後に、これは私のリストボックスです:-
<ListBox Margin="0,0,-12,0" Name="mittSchemaListBox" DataContext="{Binding}" ItemsSource="{Binding Path=Items}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Margin="0,0,0,17">
<!--Replace rectangle with image-->
<Canvas Height="100" Width="100" Margin="12,0,9,0" Background="#FFE5001B">
<TextBlock Text="{Binding Datum}" TextWrapping="Wrap" Height="100" Margin="0" HorizontalAlignment="Right" Width="100" />
</Canvas>
<StackPanel Width="311">
<TextBlock Text="{Binding Placering}" TextWrapping="Wrap" Margin="0,10" Style="{StaticResource PhoneTextExtraLargeStyle}" FontSize="36" TextAlignment="Center" FontWeight="Normal" />
</StackPanel>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
ここ数時間この問題を解決しようとしていて、どこにも行き着かないので、ここで質問することにしました。誰かが私に何が問題なのか教えてくれることを願っています。