2011-04-07 89 views
0

我正在尝试创建一个向用户显示图像的silevrlight弹出窗口,并允许他们选择下面的无线电控件以确定它们选择了哪个选项。我有这样一个对象:从列表中动态构建选择列表,其成员数量未知

public class ConfigImage 
{ 
    public int ConfigID { get; set; } 
    public string ConfigName { get; set; } 
    public string ImagePath { get; set; } 
} 

代码返回ConfigImage列表,其中包含未知数量的成员。我正在尝试使用网格向用户显示图像,所以我根据列表中成员的数量动态添加列。我希望有2-5名成员加入名单。我遇到的问题是试图动态添加图像和无线电控制。我似乎无法找到一个这样的例子。我尝试使用如下代码添加控件:

LayoutRoot.Children.Add(new Label); 

但是不知道如何在新的Label控件上设置属性。我应该知道这一点,但我画空白,似乎无法找到它的一个例子。

帮助将不胜感激!

回答

0

如果你绝对必须添加代码的控制,你将必须以它的属性设置为对象的引用:或者

Label label = new Label(); 
label.Content = "text"; 
label.Width = 10; 
LayoutRoot.Children.Add(label); 

,你可以使用初始化:

LayoutRoot.Children.Add(new Label() 
{ 
    Content = "text", 
    Width = 10 
}); 

正如BrokenGlass所说,尽管你可以在xaml中完全做到这一点。

编辑:说明使用的ItemsControl的BrokenGlass的建议只有XAML的方法:

<ItemsControl x:Name="ConfigImagesItemsControl" ItemsSource="MyConfigImagesList"> 
    <ItemsControl.ItemsPanel> 
     <ItemsPanelTemplate> 
      <StackPanel Orientation="Horizontal" /> 
     </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <Grid> 
       <Grid.RowDefinitions> 
        <RowDefinition Height="Auto" /> 
        <RowDefinition Height="Auto" /> 
       </Grid.RowDefinitions> 
       <Image Grid.Row="0" Source="{Binding ImagePath}" /> 
       <RadioButton Grid.Row="1" Content="{Binding ConfigName}" GroupName="ConfigImagesGroup" /> 
      </Grid> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 
0

只需使用任何基于在Silverlight UI元素列表 - 那些将允许您将数据绑定到一个可观察您可以在运行时更新的集合,最简单的一个是ItemsControl - 您可以在集合中的每个项目上使用什么标记,您可以在XAML中完全控制这些标记。