如何将IEnumerable与ListBox绑定

时间:2012-08-29 07:15:20

标签: c# wpf listbox model-binding

我有一个IEnumerable,它在pagebehind中承载来自JSON的值:

   IEnumerable jsonData = default(IEnumerable);
   jsonData = GetJsonValues(URL);

现在我有一个包含以下内容的集合:

  

标题=“某些标题”和
  Thumbnail =“URI as String”

现在我的XAML包含ListBox:

 <ListBox Width="480" Height="280" x:Name="listBoxJsonData" />

如何将jsonData与listBoxJsonData绑定。

我不想使用listBoxJsonData.ItemsSource = jsonData;

1 个答案:

答案 0 :(得分:0)

创建它的属性并使用MVVM模式使用DataContext进行绑定。

新课程中的这种方式(未经测试)说ViewModel.cs

private IEnumerable jsonData;

public IEnumerable GetJSonData
{
    get
    {
        if (jsonData == null)
        {
            jsonData = GetJsonValues("http://www.viki.com/api/v2/channels.json");
        }
        return jsonData;
    }
}

和XAML

<ListBox Width="480" Height="280" x:Name="listBoxJsonData" 
         ItemSource="{Binding 
                      ElementName=Name_of_Window_where_this_listbox_is, 
                      Path=GetJSonData}" />

并在窗口构造函数中

this.DataContext = new ViewModel();