我想动态地创建一系列多项内容,例如具有多个条目的FaceBook订阅源,它包括个人资料图片,名称,文本和评论部分等。
我有一个名为HomeFeedStackPanel
的Stackpanel。我想放置一个网格,其中包含一些内容在StackPanel内部。我将网格+它的元素放入<Window.Resources>
。它的密钥为FeedPostEntry
,其名称为fpe
。
<Window.Resources>
...
<!-- Static Resource -->
<Grid x:Key="FeedPostEntry" Name="fpe" Height="150" VerticalAlignment="Top" Margin="10">
<Grid.RowDefinitions>
<RowDefinition Height="25*"/>
<RowDefinition Height="50*"/>
</Grid.RowDefinitions>
<Rectangle Fill="#FF2E2E2E" Grid.RowSpan="2" RadiusY="7" RadiusX="7"/>
<Image x:Name="userPic" HorizontalAlignment="Left" Height="48" Width="48" VerticalAlignment="Top" Margin="2"/>
<Label x:Name="Username" Content="Label" HorizontalAlignment="Left" Margin="55,0,0,0" VerticalAlignment="Center" Background="{x:Null}" Foreground="White" FontFamily="SimSun" FontSize="16" FontWeight="Bold"/>
</Grid>
</Window.Resources>
如何通过C#将该网格(包括它的元素)添加到StackPanel中?
提前致谢。
答案 0 :(得分:2)
您不应该将Grid
放在Resources
中,而是将其定义在DataTemplate
的{{1}}中,如下所示:
ItemTemplate
在内容保留控件(例如<ItemsControl x:Name="HomeFeedStackPanel" ItemsSource="{Binding YourItems}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Vertical"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid x:Key="FeedPostEntry" Name="fpe" Height="150" VerticalAlignment="Top" Margin="10">
<Grid.RowDefinitions>
<RowDefinition Height="25*"/>
<RowDefinition Height="50*"/>
</Grid.RowDefinitions>
<Rectangle Fill="#FF2E2E2E" Grid.RowSpan="2" RadiusY="7" RadiusX="7"/>
<Image x:Name="userPic" HorizontalAlignment="Left" Height="48" Width="48" VerticalAlignment="Top" Margin="2"/>
<Label x:Name="Username" Content="Label" HorizontalAlignment="Left" Margin="55,0,0,0" VerticalAlignment="Center" Background="{x:Null}" Foreground="White" FontFamily="SimSun" FontSize="16" FontWeight="Bold"/>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
或Label
)中,您应该定义与数据的绑定。