【问题标题】:Silverlight listbox questionSilverlight 列表框问题
【发布时间】:2011-09-19 21:12:28
【问题描述】:

我正在使用listBox.ItemsSource = e.Result.Persons,这是一个人的集合。当我希望它显示每个人对象的名字时,列表框会显示实际的对象名称。我该怎么做?

【问题讨论】:

    标签: silverlight listbox itemssource


    【解决方案1】:

    使用列表框 ItemTemplate。 像这样的。

    <ListBox>
    <ListBox.ItemTemplate>
    <DataTemplate>
    <TextBlock Text="{Binding FirstName}"/>
    </ListBox.ItemTemplate>
    </DataTemplate>
    </ListBox>
    

    【讨论】:

      【解决方案2】:

      除了其他响应指定的绑定方法外,你可以简单的绑定如下:

      listBox.ItemsSource = e.Result.Persons.Select(d => new { FirstName });
      

      【讨论】:

      • 我不太喜欢这种实现所请求功能的方式,因为它会用 FirstName 内容替换 ListBox 中每个出现的 Person 实例。例如,您可能不希望 SelectedItem 属性出现这种行为。
      • 我同意,但如果列表框确实与源数据断开连接并且您的值是您希望提取的值,这是一个选项。绑定方法当然是最好的方法,但是这个选项展示了过滤匿名类型以满足您的需求的能力。
      • 大家讨论得很好,我很感激。
      【解决方案3】:

      或者使用专用的"DisplayMemberPath" property,它可以轻松完成您想要的操作,没有任何副作用(也没有额外的标记):

      <ListBox DisplayMemberPath="FirstName" />
      

      对于更复杂的项目表示,使用模板(见下文)。

      【讨论】:

        【解决方案4】:

        您可以覆盖 Persons 对象的 ToString() 方法,以便显示此人的名字。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-03-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-07-27
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多