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# 创建“一个”的最佳方法是什么;联系人列表“;在银光中?_C#_Silverlight - Fatal编程技术网

C# 创建“一个”的最佳方法是什么;联系人列表“;在银光中?

C# 创建“一个”的最佳方法是什么;联系人列表“;在银光中?,c#,silverlight,C#,Silverlight,我正在尝试创建一个Silverlight应用程序,它可以提取我的Flickr联系人和照片。我想让他们表现得“漂亮”。我打算创建一个控件,在其名称旁边显示用户及其图像。我希望每个用户都被一一列出。大概是这样的: ---------------------------- User Name: <Photo> <Photo> <Photo> <Photo> ---------------------------- User Name

我正在尝试创建一个Silverlight应用程序,它可以提取我的Flickr联系人和照片。我想让他们表现得“漂亮”。我打算创建一个控件,在其名称旁边显示用户及其图像。我希望每个用户都被一一列出。大概是这样的:

----------------------------
User Name: <Photo> <Photo>
           <Photo> <Photo>
----------------------------
User Name: <Photo> <Photo>
           <Photo> <Photo>
----------------------------
User Name: <Photo> <Photo>
           <Photo> <Photo>
----------------------------
User Name: <Photo> <Photo>
           <Photo> <Photo>
----------------------------
User Name: <Photo> <Photo>
           <Photo> <Photo>
----------------------------
----------------------------
用户名:
----------------------------
用户名:
----------------------------
用户名:
----------------------------
用户名:
----------------------------
用户名:
----------------------------
我希望能够动态创建它,并有一个滚动条出现,如果需要的话。(因此用户可以上下滚动)

创建这样的东西的最佳方法是什么?是否有我应该遵循的控制或技术?

这对Silverlight和Flicker可能会有帮助

至于设置用户控件的样式,您看过Silverlight和Flicker上的?


至于设置用户控件的样式,您看到了吗?

您想要一个列表框。事实上,多个嵌套的列表框

首先,将数据放入一个可以很好地与Silverlight配合使用的结构中(我在这里假设Silverlight2)。为此,我会使用

ObservableCollection<Contact>
observedcollection
其中Contact是表示一个联系人的类。那个班应该有一个

ObservableCollection<FlickrPhoto> 
observedcollection
作为一种财产

下面是XAML的结构。您可能希望将模板移到资源中,或者创建一个usercontrol来保存每个列表项

<!-- needs the SilverlightToolkit for WrapPanel -->
<!-- xmlns:tk="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Toolkit" -->

<ListBox ItemsSource="{Binding}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Grid Width="400">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*"/>
                    <ColumnDefinition Width="*"/>
                </Grid.ColumnDefinitions>
                <TextBlock Grid.Column="0" Text="{Binding UserName}"/>
                <ListBox 
                    Grid.Column="1" 
                    ItemsSource="{Binding FlickrPhotos}"
                    ScrollViewer.HorizontalScrollBarVisibility="Disabled">
                    <ListBox.ItemsPanel>
                        <ItemsPanelTemplate>
                            <tk:WrapPanel/>
                        </ItemsPanelTemplate>
                    </ListBox.ItemsPanel>
                    <ListBox.ItemTemplate>
                        <DataTemplate>
                            <Image Source="{Binding Photo}" Width="80"/>
                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>
            </Grid>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

注:

  • 这段代码只是一个非常粗略的示例
  • 您需要禁用列表框上的水平滚动条以强制WrapPanel进行包装
  • 您需要将外部列表框(或祖先控件)的DataContext设置为联系人集合

    • 您想要一个列表框。事实上,多个嵌套的列表框

      首先,将数据放入一个可以很好地与Silverlight配合使用的结构中(我在这里假设Silverlight2)。为此,我会使用

      ObservableCollection<Contact>
      
      observedcollection
      
      其中Contact是表示一个联系人的类。那个班应该有一个

      ObservableCollection<FlickrPhoto> 
      
      observedcollection
      
      作为一种财产

      下面是XAML的结构。您可能希望将模板移到资源中,或者创建一个usercontrol来保存每个列表项

      <!-- needs the SilverlightToolkit for WrapPanel -->
      <!-- xmlns:tk="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Toolkit" -->
      
      <ListBox ItemsSource="{Binding}">
          <ListBox.ItemTemplate>
              <DataTemplate>
                  <Grid Width="400">
                      <Grid.ColumnDefinitions>
                          <ColumnDefinition Width="*"/>
                          <ColumnDefinition Width="*"/>
                      </Grid.ColumnDefinitions>
                      <TextBlock Grid.Column="0" Text="{Binding UserName}"/>
                      <ListBox 
                          Grid.Column="1" 
                          ItemsSource="{Binding FlickrPhotos}"
                          ScrollViewer.HorizontalScrollBarVisibility="Disabled">
                          <ListBox.ItemsPanel>
                              <ItemsPanelTemplate>
                                  <tk:WrapPanel/>
                              </ItemsPanelTemplate>
                          </ListBox.ItemsPanel>
                          <ListBox.ItemTemplate>
                              <DataTemplate>
                                  <Image Source="{Binding Photo}" Width="80"/>
                              </DataTemplate>
                          </ListBox.ItemTemplate>
                      </ListBox>
                  </Grid>
              </DataTemplate>
          </ListBox.ItemTemplate>
      </ListBox>
      
      
      
      注:

      • 这段代码只是一个非常粗略的示例
      • 您需要禁用列表框上的水平滚动条以强制WrapPanel进行包装
      • 您需要将外部列表框(或祖先控件)的DataContext设置为联系人集合

      一旦您了解了模板,Silverlight中的这种布局就很容易了

      如果您曾经使用过ASP.net,可以考虑使用类固醇repeater(或者在最新版本中使用ListView)

      基本上,您需要的是一个列表框,该列表框用您特定的“模板”(用户名和四张照片)显示每个项目

      因此,假设您将listbox的ItemsSource属性设置为包含UserName属性以及Photo1到Photo4的对象集合:

      <ListBox x:Name="Photos">
        <ListBox.ItemTemplate>
          <DataTemplate>
            <YOUR_ITEM_LAYOUT_HERE />
          </DataTemplate>
        </ListBox.ItemTemplate>
      </ListBox>
      
      
      
      其中,
      被一个项目(用户名和四张照片)所需的实际布局替换


      希望有帮助。如果您需要更多信息,只需留下评论。

      一旦您了解了模板,在Silverlight中这种布局很容易

      如果您曾经使用过ASP.net,可以考虑使用类固醇repeater(或者在最新版本中使用ListView)

      基本上,您需要的是一个列表框,该列表框用您特定的“模板”(用户名和四张照片)显示每个项目

      因此,假设您将listbox的ItemsSource属性设置为包含UserName属性以及Photo1到Photo4的对象集合:

      <ListBox x:Name="Photos">
        <ListBox.ItemTemplate>
          <DataTemplate>
            <YOUR_ITEM_LAYOUT_HERE />
          </DataTemplate>
        </ListBox.ItemTemplate>
      </ListBox>
      
      
      
      其中,
      被一个项目(用户名和四张照片)所需的实际布局替换


      希望有帮助。如果您需要更多信息,请留下评论。

      谢谢您的链接,但我已经知道如何访问Flickr API和样式控件。我需要帮助“复制我的控件X倍,并有一个滚动条通过它们查看”。正在寻找一个好的技术来实现这一点。感谢您的链接,但我已经知道如何访问Flickr API和样式控件。我需要帮助“复制我的控件X倍,并有一个滚动条通过它们查看”。寻找一个好的技术来做到这一点。