如何实例化包含其他元素的Stackpanel?

时间:2015-01-17 20:59:38

标签: c# xaml

我想动态地创建一系列多项内容,例如具有多个条目的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中?

提前致谢。

1 个答案:

答案 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)中,您应该定义与数据的绑定。