如何填充LongListSelector

irl*_*dev 3 c# grid windows-phone longlistselector windows-phone-8

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

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

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

LongListSelectorThing.add("trainstationA");
LongListSelectorThing.add("trainstationB");
LongListSelectorThing.add("trainstationC");
Run Code Online (Sandbox Code Playgroud)

等等

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

对不起,如果这看起来很基本,我对此很新.

谢谢!

Rom*_*asz 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>
Run Code Online (Sandbox Code Playgroud)

您还要声明其项目的外观.它可以是任何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"));
  }
}
Run Code Online (Sandbox Code Playgroud)

重要的是:

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

希望这可以帮助.快乐的编码.