2

在我正在使用的当前客户端(而不是控制)中,接收/解析请求的方式是:

        var result = (IDictionary<string, object>)e.GetResultData();
        string id = result["id"].ToString();
        string name = result["name"].ToString();

        Dispatcher.BeginInvoke(() =>
        {

            id.ItemsSource = new List<String> { 
                id, 
                name};
        }

XAML 看起来像:

<ListBox Height="168" HorizontalAlignment="Left" Margin="204,21,0,0" Name="id" VerticalAlignment="Top" Width="239" >
   <ListBox.ItemTemplate>
     <DataTemplate>
       <StackPanel Orientation="Vertical" Margin="2">
          <TextBlock Text="{Binding}" />
       </StackPanel>
      </DataTemplate>
    </ListBox.ItemTemplate>
 </ListBox>

新更新 - 寻求帮助(未解决): 我正在尝试使用这些字符串,以便我可以将每个项目放入 ListBox(如果存在更多),而不是仅抓取 1 个项目集(例如 id、名称、链接)。

   public class Datum
    {
        public string id { get; set; }
        public string name { get; set; }
        public string link { get; set; }
    }

任何帮助都将不胜感激!

4

1 回答 1

1

您需要将 设置ItemsSource为实现的东西IEnumerable

id.ItemsSource = new List<String> { id };

您还需要调整绑定以接受,DataContext因为您没有传入对象。

<TextBlock Text="{Binding}" />

如果你想在一个简单的字符串之外扩展,创建一个类来包装你的内容,然后绑定到给定的属性。

class Person
{
     String id {get; set;}
     String name {get; set;}
}

 <ListBox Height="168" HorizontalAlignment="Left" Margin="204,21,0,0" Name="id" VerticalAlignment="Top" Width="239" >
   <ListBox.ItemTemplate>
     <DataTemplate>
       <StackPanel Orientation="Horizontal" Margin="2">
          <TextBlock Text="{Binding id}" />
          <TextBlock Text="{Binding name}" />
       </StackPanel>
      </DataTemplate>
    </ListBox.ItemTemplate>
 </ListBox>

然后在您后面的代码中,您可以创建一个实例并像以前一样分配。

Person p = new Person();
p.id = "id";
p.name = "name";

List<Person> people = new List<Person>();
people.Add(p);

id.ItemsSource = people;

这是一个简单的示例,但应该为您提供所需的内容。

于 2012-05-15T19:48:06.097 回答