首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何填充LongListSelector

如何填充LongListSelector
EN

Stack Overflow用户
提问于 2013-11-17 11:41:17
回答 1查看 8.9K关注 0票数 3

我是从C# Windows 8开发开始的,我正在尝试编写一个使用LongListSelector的应用程序。该应用程序将显示一长串火车站名称。

我一直在在线上查看一些示例,包括MSDN PeopleHub和PhotoHub示例,但它们似乎非常复杂。我取下了PeopleHub示例,并对它进行了一些黑客攻击,直到我在LongListSelector中显示了一个站点列表,但我无法确定列表中选择了哪一项。当传递到另一个页面时,SelectedItem属性只是返回应用程序名,而不是列表中选择的项目。

我认为我需要一个基本示例,说明如何向LongListSelector中添加一些项,然后查找所选项并将其传递到另一个页面。我不完全理解控件是如何工作的,如果您必须在DataBinding中使用某种LongListSelector来填充它,或者它是否更简单,比如:

代码语言:javascript
复制
LongListSelectorThing.add("trainstationA");
LongListSelectorThing.add("trainstationB");
LongListSelectorThing.add("trainstationC");

有人能给我一些简单的基本提示,说明如何填充这个控件并找出用户选择的项目吗?当我说他们选择哪个项目时,当LongListSelector网格出现时,他们单击A,然后显示以A开头的事物列表,然后单击trainstationA,我希望能够检测到他们选择了trainstationA,并将信息传递到另一个页面,这样我就可以显示关于它的更多信息。

抱歉,如果这看上去很简单的话,我对这件事很陌生。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2013-11-17 15:44:48

下面是一个基本的示例,可以帮助您理解:首先,在页面(xaml文件)中定义控件LongListSelector (LLS):

代码语言:javascript
复制
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
    <phone:LongListSelector Name="myLLS" Margin="0">
        <phone:LongListSelector.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding Name}"/>
            </DataTemplate>
        </phone:LongListSelector.ItemTemplate>
    </phone:LongListSelector>
</Grid>

您还可以声明其项目的外观。它可以是任何UIElement -一个按钮,图像,网格等。在上面的代码中,我声明我的项目将是一个TextBlock,它的内容(文本)已经绑定到一个属性'Name‘。我也给LLS起了一个名字,以后我可以参考它。

在Page.cs代码中,您将填充LLS。让我们创建简单的Station类,并填充LLS:

代码语言:javascript
复制
public class Station
{
  private string _stationName;

  public string Name
  {
     get { return _stationName; }
     set { _stationName = value; }
  }

  public Station(string station)
  {
     this.Name = station;
  }
}

public partial class MainPage : PhoneApplicationPage
{
  ObservableCollection<Station> trainStations = new ObservableCollection<Station>();

  public MainPage()
  {
     InitializeComponent();

     myLLS.ItemsSource = trainStations;

     trainStations.Add(new Station("Germany"));
     trainStations.Add(new Station("France"));
     trainStations.Add(new Station("Italy"));
  }
}

重要的是:

  • 在我的Station类中,有一个名为'Name‘的属性--它是绑定TextBlock内容的属性。
  • 我已经创建了ObservableCollection,它是我的站点的集合-它类似于一个列表,但是当添加或删除新项时,会引发PropertyChanged事件,因此您的LongListSelector可以在添加新站点时自动更新。
  • 我已经将创建的集合分配给myLLS.ItemsSource --这意味着创建的LLS将使用项填充(在xaml中描述为DataTemplate),而该项的一个来源就是该集合。

希望这能有所帮助。编码愉快。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20030224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档