如何填充LongListSelector

时间:2013-11-17 11:41:17

标签: c# windows-phone-8 grid windows-phone longlistselector

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

我一直在网上查看一些样本,包括MSDN PeopleHub和PhotoHub样本,但它们看起来非常复杂。我拿了PeopleHub示例并对其进行了一些攻击,直到我在LongListSelector中显示一个站列表但我无法找到列表中选择了哪个项目。 SelectedItem属性只是在传递给另一个页面时返回应用程序名称,而不是在列表中选择了哪个项目。

我想我需要一个基本的例子,说明如何将一些项添加到LongListSelector,然后查找并将所选项传递给另一个页面。我不完全理解控件是如何工作的,如果你必须使用某种类型的DataBinding和LongListSelector来填充它,或者它是否更简单:

LongListSelectorThing.add("trainstationA");
LongListSelectorThing.add("trainstationB");
LongListSelectorThing.add("trainstationC");

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

很抱歉,如果这看起来很基本,我对此很陌生。

谢谢!

1 个答案:

答案 0 :(得分:12)

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

<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 - 按钮,图像,网格等。在上面的代码中,我声明我的Item将是一个TextBlock,其内容(文本)我已绑定到属性'Name'。我还给了LLS一个名字,我稍后可以参考它。

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

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,它是我的站点的集合 - 它类似于List但是当添加或删除新项目时,会引发PropertyChanged事件,因此当您添加新站点时,您的LongListSelector可以自动更新。
  • 我已将创建的集合分配给myLLS.ItemsSource - 这意味着创建的LLS将使用Items填充(在xaml中描述为DataTemplate),此项目的来源就是该集合。

希望这会有所帮助。快乐的编码。