C# 在Windows RT应用程序中每n秒刷新一次web图片

C# 在Windows RT应用程序中每n秒刷新一次web图片,c#,windows-8,C#,Windows 8,我在VisualStudio中选取了一个示例,并开始对其进行修改,以创建一个包含网络摄像头图片的流量应用程序(假设每10秒更新一次)。我有一个SampleData.json文件,其中包含以下示例项 {"Groups":[ { "UniqueId": "Group-1", "Title": "Primorska in Notranjska", "Subtitle": "Group subtitle: 1", "ImagePath": "Assets/Pics/p

我在VisualStudio中选取了一个示例,并开始对其进行修改,以创建一个包含网络摄像头图片的流量应用程序(假设每10秒更新一次)。我有一个SampleData.json文件,其中包含以下示例项

{"Groups":[
  {
    "UniqueId": "Group-1",
    "Title": "Primorska in Notranjska",
    "Subtitle": "Group subtitle: 1",
    "ImagePath": "Assets/Pics/primorska.jpg",
    "Description" : "Group Description: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus tempor scelerisque lorem in vehicula. Aliquam tincidunt, lacus ut sagittis tristique, turpis massa volutpat augue, eu rutrum ligula ante a ante",
    "Items":
    [
      {
        "UniqueId": "Group-1-Item-1",
        "Title": "A1/E61/E70 Ljubljana - Koper, priključek Brezovica",
        "Subtitle": "Item Subtitle: 1",
        "ImagePath": "Assets/LightGray.png",
        "Description" : "",
        "Content" : "A1/E61/E70 Ljubljana - Koper, priključek Brezovica, pogled proti Postojni",
        "PicSource" : "http://kamere.dars.si/kamere/ljubljana/K01_Brezovica_Po.jpg"
      },
然后我将图片绑定到每个项目:

<Image Source="{Binding PicSource}" Grid.Row="2" Margin="0,88,440,10" 
       Stretch="UniformToFill" AutomationProperties.Name="{Binding Title}" Grid.ColumnSpan="2"/>
……以后 公共字符串PicSource{get;private set;} ……以后 专用异步任务GetSampleDataAsync() { 如果(this.\u groups.Count!=0) 返回

        Uri dataUri = new Uri("ms-appx:///DataModel/SampleData.json");

        StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(dataUri);
        string jsonText = await FileIO.ReadTextAsync(file);
        JsonObject jsonObject = JsonObject.Parse(jsonText);
        JsonArray jsonArray = jsonObject["Groups"].GetArray();

        foreach (JsonValue groupValue in jsonArray)
        {
            JsonObject groupObject = groupValue.GetObject();
            SampleDataGroup group = new SampleDataGroup(groupObject["UniqueId"].GetString(),
                                                        groupObject["Title"].GetString(),
                                                        groupObject["Subtitle"].GetString(),
                                                        groupObject["ImagePath"].GetString(),
                                                        groupObject["Description"].GetString());

            foreach (JsonValue itemValue in groupObject["Items"].GetArray())
            {
                JsonObject itemObject = itemValue.GetObject();
                group.Items.Add(new SampleDataItem(itemObject["UniqueId"].GetString(),
                                                   itemObject["Title"].GetString(),
                                                   itemObject["Subtitle"].GetString(),
                                                   itemObject["ImagePath"].GetString(),
                                                   itemObject["Description"].GetString(),
                                                   itemObject["Content"].GetString(),
                                                   itemObject["PicSource"].GetString()));
            }
            this.Groups.Add(group);
        }
    }

您可以通过以下代码设置源代码:

public MainPage()
{
    this.InitializeComponent();

    DispatcherTimer timer = new DispatcherTimer();
    timer.Interval = TimeSpan.FromSeconds(n);
    timer.Tick += (sender, e) =>
    {
        //  ...
        //  image.Source = ...
    };
    timer.Start();           
}

如何以与XAML相同的方式绑定照片?如果
PicSource
是MVVM属性,则只需更改它的值,它就会反映在图像中。此代码正确吗:'image image=new image();image.Source=(“{Binding PicSource}”)'我收到一个错误。@Skynet,您试图将XAML语法与C#相结合。Xyroid的意思是,PicSource是ViewModel中某个位置的对象。如果您更新PicSource,并且MVVM正确,它将自动更新UI。PicSource必须使用新值(新图片的来源)进行更改@哦,对不起,我用更多的信息更新了这篇文章。
public MainPage()
{
    this.InitializeComponent();

    DispatcherTimer timer = new DispatcherTimer();
    timer.Interval = TimeSpan.FromSeconds(n);
    timer.Tick += (sender, e) =>
    {
        //  ...
        //  image.Source = ...
    };
    timer.Start();           
}