Windows 8.1集线器并在运行时添加项目

时间:2015-01-25 07:34:00

标签: c# windows-phone-8.1 windows-8.1

我想在Universal App(Windows / Windows Phone 8.1)上创建一个集线器,如下图所示: list

我希望在运行时通过c#代码添加项目而不进行任何绑定(microsoft示例用于绑定和XAML),并且每个项目都有一个Tapping或Clicking事件。 我怎样才能做到这一点?在此之前我从未与Hub合作过。 谢谢你的帮助

1 个答案:

答案 0 :(得分:0)

您可以使用不同的方法:

  • 经典的是文档中建议的:在Hub页面中创建一个DataTemplate,在其中添加ListView并将ItemClick事件设置为您想要的。然后为页面创建自己的ViewModel,添加一个IEnumerable参数来绑定ItemSource。然后,您将能够在后面的代码中编辑该参数,这些更改将反映在UI中。

重点是,当这些项目位于数据模板内部时(如Hub页面内部),您无法使用x:Name =“myName”直接访问UI元素。

  • 可能的解决方案是创建UserControl以放置在Hub项的数据模板中。 然后,您将能够直接从代码后面处理UserControl,而无需使用Bindings。例如,您可以使用其中包含StackPanel的ScrollViewer。然后,您将能够以编程方式创建列表元素,设置其事件并将其添加到StackPanel,最终使用一些动画。或者您可以使用ListView并使用您在运行时创建的新列表手动刷新ItemsSource参数。

无论如何,我真的建议您创建自己的ViewModel,并将ListView绑定到您的页面DataContext,如MSDN指南中所建议的那样。 ListView已经有很多可以为每个列表项订阅的事件,所以这是你在这里更好的选择。