C# 如何以编程方式将项目添加到WP7中的全景项目
我正在开发一个具有动态数量的全景项目的应用程序,现在这些项目都是通过使用“ItemsSource”属性将它们的列表Bing到全景中来添加的 但当我尝试向创建的全景项目添加内容时,问题就出现了。现在,我可以添加一个ListBox,它可以按预期工作,但是我真的想添加一些我有更多控制权的东西(可能是某种类型的自定义控件) 现在,我已经找到了一些地方,告诉我如何通过编辑MainPage.xaml来做到这一点,但是因为我不知道我需要多少,我不能(我想)这样做 PanoramaItem类没有“Items”属性,只有“Content”属性(我认为这是我所需要的),这就增加了问题C# 如何以编程方式将项目添加到WP7中的全景项目,c#,silverlight,windows-phone-7,C#,Silverlight,Windows Phone 7,我正在开发一个具有动态数量的全景项目的应用程序,现在这些项目都是通过使用“ItemsSource”属性将它们的列表Bing到全景中来添加的 但当我尝试向创建的全景项目添加内容时,问题就出现了。现在,我可以添加一个ListBox,它可以按预期工作,但是我真的想添加一些我有更多控制权的东西(可能是某种类型的自定义控件) 现在,我已经找到了一些地方,告诉我如何通过编辑MainPage.xaml来做到这一点,但是因为我不知道我需要多少,我不能(我想)这样做 PanoramaItem类没有“Items”属
我想我需要为自定义控件定义一个.xaml/.cs文件,然后以某种方式将其应用于PanoramaItem,但我真的不确定我将在这里假设您在这里使用的是MVVM框架,如果不是,我很抱歉 您的正确想法是,您可能希望对Pano项目使用用户控件。一旦实现了这一点,下面就是新的XAML代码:
<controls:Panorama ItemsSource="{Binding PanoViewModels}">
<controls:Panorama.ItemTemplate>
<DataTemplate>
<ctl:PanoItemControl />
</DataTemplate>
</controls:Panorama.ItemTemplate>
</controls:Panorama>
显然,这是简化了的,但应该能让人理解这个想法。在您的控件中,您可以直接绑定到PanoViewModels中包含的对象。如果您正在执行MVVM和数据绑定,那么Barranger Ridler的答案看起来不错 如果要为每个子级编写自定义C#代码,则需要在每个全景项目的内容处放置一个容器(例如网格或StackPanel)——然后可以添加到该容器的子级。我手头没有c#代码,但这是ironruby代码-它向StackPanel添加5个文本块,然后将StackPanel设置为PanoramaItem的内容-应该很容易移植
stack_panel = StackPanel.new
for i in 1..5
t = TextBlock.new
t.font_size = i*24
t.text = "Line " << i.to_s
s.children.add t
end
pi = PanoramaItem.new
pi.header = "Title"
pi.content = stack_panel
panorama.items.add pi
stack\u panel=StackPanel.new
因为我在1..5
t=TextBlock.new
t、 font_size=i*24
t、 text=“Line”