Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

binding not being done with json data

I have a listbox and its datacontext is set to a collection. In the background I am fetching data and giving it to the binding element. But it is not reflected in my design. Code goes as follows.

<ListBox Name="StatusListBox"
                 DataContext="{Binding StatusCollection}">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Grid>
                        <TextBlock Text="{Binding}" TextWrapping="Wrap"/>
                    </Grid>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

In the Page definitions I gave as

DataContext="{Binding StatusViewModel, RelativeSource={RelativeSource Self}}"
d:DataContext="{Binding Source={d:DesignData Source=/Data/SampleData.json, Type=data:DataSource}}"

In cs file I have a statusviewmodel and i give the statusviewmodel, the content i fetched.

public ObservableDictionary StatusViewModel
    {
        get
        {
            return this.statusViewModel;
        }
    }

    private async void GetStatusOnline()
    {
        HttpWebRequest request = HttpWebRequest.Create(requestURI) as HttpWebRequest;
        WebResponse response = await request.GetResponseAsync();
        ObservableCollection<string> statusCollection = new ObservableCollection<string>();
        using (var reader = new StreamReader(response.GetResponseStream()))
        {
            string textcontent = reader.ReadToEnd();
            Debug.WriteLine(textcontent);
            DataSource dataSource = new DataSource();
            this.StatusViewModel["StatusCollection"] = dataSource.GetStatusCollection(textcontent);
        }
    }
private ObservableCollection<Status> _statusCollection = new ObservableCollection<Status>();
    public ObservableCollection<Status> StatusCollection
    {
        get
        {
            return this._statusCollection;
        }
    }
public IEnumerable<Status> GetStatusCollection(string textcontent)
    {
        JsonObject jsonObject = JsonObject.Parse(textcontent);
        JsonArray jsonArray = jsonObject["items"].GetArray();
        foreach (JsonValue value in jsonArray)
        {
            StatusCollection.Add(new Status(value.GetString()));
        }

        return StatusCollection;
    }

The sample json data is

{
"items": [
    "Hi\n",
    "This is my new status. How is this?\n",
    "This is thrid line."
]
}
like image 343
Mani Avatar asked Aug 12 '26 23:08

Mani


1 Answers

You are not settings the ItemSource property of the ListBox. Change

DataContext="{Binding StatusCollection}"

to

ItemSource="{Binding StatusCollection}"
like image 158
Igor Kulman Avatar answered Aug 17 '26 21:08

Igor Kulman



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!