Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何以编程方式将项目添加到WP7中的全景项目_C#_Silverlight_Windows Phone 7 - Fatal编程技术网

C# 如何以编程方式将项目添加到WP7中的全景项目

C# 如何以编程方式将项目添加到WP7中的全景项目,c#,silverlight,windows-phone-7,C#,Silverlight,Windows Phone 7,我正在开发一个具有动态数量的全景项目的应用程序,现在这些项目都是通过使用“ItemsSource”属性将它们的列表Bing到全景中来添加的 但当我尝试向创建的全景项目添加内容时,问题就出现了。现在,我可以添加一个ListBox,它可以按预期工作,但是我真的想添加一些我有更多控制权的东西(可能是某种类型的自定义控件) 现在,我已经找到了一些地方,告诉我如何通过编辑MainPage.xaml来做到这一点,但是因为我不知道我需要多少,我不能(我想)这样做 PanoramaItem类没有“Items”属

我正在开发一个具有动态数量的全景项目的应用程序,现在这些项目都是通过使用“ItemsSource”属性将它们的列表Bing到全景中来添加的

但当我尝试向创建的全景项目添加内容时,问题就出现了。现在,我可以添加一个ListBox,它可以按预期工作,但是我真的想添加一些我有更多控制权的东西(可能是某种类型的自定义控件)

现在,我已经找到了一些地方,告诉我如何通过编辑MainPage.xaml来做到这一点,但是因为我不知道我需要多少,我不能(我想)这样做

PanoramaItem类没有“Items”属性,只有“Content”属性(我认为这是我所需要的),这就增加了问题


我想我需要为自定义控件定义一个.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”