0

我想从我的 C# 代码动态地在堆栈面板中添加一个图像和一个 MediaElement,但我看不到其他元素,所以在我的 xaml 代码中我有这个:

<ListBox x:Name="lstbxUIElements" Width="auto" Height="auto">
    <ListBox.ItemsPanel>
         <ItemsPanelTemplate>
             <StackPanel Name="stackContainer" DataContext="{Binding}" Orientation="Horizontal"/>
         </ItemsPanelTemplate>
    </ListBox.ItemsPanel>
</ListBox>

在我的 C# 代码中,用户可以拍摄照片或视频,我想在堆栈面板中水平显示它们,我只能看到一个元素。我的 C# 代码:

//Constructor
public MainPage()
{
    lstbxUIElements.ItemsSource = multiMediaElements;//(List<Objects> multiMediaElements)
}

public void MethodVideo()
{
    MediaElement a ="some code to retrieve mp4"
    multiMediaElements.add(a);
}

public void MethodImage()
{
    BitmapImage bmp = new BitmapImage();
    bmp.SetSource(e.ChosenPhoto);
    multiMediaElements.add(bmp);
}

有什么建议吗?(使用 WP8)

4

2 回答 2

2

为正确的任务使用正确的控件。如果要向面板添加控件,则不需要列表框,直接使用 stackpanel 代替:

<StackPanel Name="UIElements" Orientation="Horizontal"/>

然后使用 Children 属性添加您的控件:

public void MethodImage()
{
    BitmapImage bmp = new BitmapImage();
    bmp.SetSource(e.ChosenPhoto);
    UIElements.Children.Add(bmp);
}
于 2013-07-23T06:22:25.720 回答
0

如果您需要在列表框中添加控件,则直接添加它,您不需要定义任何项目模板,然后进行通常的绑定。您可以按照以下代码所示进行操作:

XAML:

<ListBox x:Name="lstbxUIElements" Width="auto" Height="auto" />

C#

BitmapImage bmp = new BitmapImage();
bmp.SetSource(e.ChosenPhoto);
lstbxUIElements.Items.Add(bmp)

对于多个项目,请继续在列表框项目中添加元素,如上所示

于 2013-07-23T07:05:30.437 回答