我想动态地在我的C#代码的堆栈面板中添加一个Image和一个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合作)
答案 0 :(得分:2)
使用正确的控件执行正确的任务。如果要向面板添加控件,则不需要列表框,而是直接使用stackpanel:
<StackPanel Name="UIElements" Orientation="Horizontal"/>
然后使用Children属性添加控件:
public void MethodImage()
{
BitmapImage bmp = new BitmapImage();
bmp.SetSource(e.ChosenPhoto);
UIElements.Children.Add(bmp);
}
答案 1 :(得分:0)
如果需要在列表框中添加控件,则直接添加它,您不需要定义任何项模板,然后执行常规绑定。你可以做如下面的代码所示:
<强> XAML:强>
<ListBox x:Name="lstbxUIElements" Width="auto" Height="auto" />
<强> C#强>
BitmapImage bmp = new BitmapImage();
bmp.SetSource(e.ChosenPhoto);
lstbxUIElements.Items.Add(bmp)
对于多个项目,请继续在列表框项目中添加元素,如上所示