如何在网格中动态添加按钮和Silverlight播放器?

时间:2011-07-05 14:52:15

标签: silverlight media-player media

我基本上是尝试动态/编程创建以下代码集,但我不确定如何执行此操作。

    <Grid x:Name="LayoutRoot">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
        <RowDefinition/>
    </Grid.RowDefinitions>

    <smf:SMFPlayer x:Name="player" Grid.Row="0" AutoPlay="False">
        <smf:SMFPlayer.Playlist>
            <media:PlaylistItem 
                DeliveryMethod="AdaptiveStreaming" 
                MediaSource="http://video3.smoothhd.com.edgesuite.net/ondemand/Big%20Buck%20Bunny%20Adaptive.ism/Manifest"/>
            <media:PlaylistItem 
                DeliveryMethod="AdaptiveStreaming" 
                SelectedCaptionStreamName="textstream_eng"
                MediaSource="http://streams.smooth.vertigo.com/elephantsdream/Elephants_Dream_1024-h264-st-aac.ism/manifest"/>
        </smf:SMFPlayer.Playlist>
    </smf:SMFPlayer>

    <StackPanel Grid.Row="1" Orientation="Horizontal" Background="Transparent">
        <Button x:Name="test1" Height="30" Width="70" Content="Test 1"/>
        <Button x:Name="test2" Height="30" Width="70" Content="Test 2"/>
    </StackPanel>
</Grid>

以下是静态看法:

2 个答案:

答案 0 :(得分:1)

首先,您必须像这样给StackPanel命名;

<StackPanel x:Name="spBottom" Grid.Row="1" Orientation="Horizontal" Background="Transparent">
        <Button x:Name="test1" Height="30" Width="70" Content="Test 1"/>
        <Button x:Name="test2" Height="30" Width="70" Content="Test 2"/>
</StackPanel>

然后,您必须在代码隐藏中添加以下行;

For iLoop As Integer = 0 to 4
     Dim btn As New Button With {.Content = "Button" & iLoop}
     spBottom.Children.Add(btn)
Next iLoop

我希望这会对你有所帮助!

答案 1 :(得分:0)

可以在代码隐藏中创建没有xmlns(XML名称空间)前缀的控件,而无需添加任何用法。例如,在C#中,您可以使用以下代码从XAML重新创建StackPanel:

StackPanel panel = new StackPanel() { Orientation = Orientation.Horizontal, Background = null };
panel.SetValue(Grid.RowProperty, 2);
LayoutRoot.Children.Add(panel);

带有xmlns前缀的元素,带冒号的任何元素,例如<smf:都需要知道代码隐藏中的命名空间。关联的命名空间在第一个元素中定义,看起来像xmlns:smf="PathToTheNamespace"。通常在C#中的代码隐藏文件中通过在顶部添加using PathToTheNamespace语句来引用此命名空间。