使用后台代码创建和显示控件
本文关键字:显示 控件 创建 代码 后台 | 更新日期: 2023-09-27 18:08:47
对于我的一个WPF项目,我需要集成VLC播放器,我一直在玩这个Codeplex项目的示例应用程序
然而,我需要在运行时创建多个播放器控件实例,并显示它设置其各种属性。玩家实例的数量是基于用户的选择。
我正试图将示例应用程序中给出的XAML转换为其等效代码。
<Wpf:VlcControl x:Name="myVlcControl" />
<Grid Grid.Row="0">
<Grid.Background>
<VisualBrush Stretch="Uniform">
<VisualBrush.Visual>
<Image Source="{Binding ElementName=myVlcControl, Path=VideoSource}" />
</VisualBrush.Visual>
</VisualBrush >
</Grid.Background>
</Grid>
这是我到目前为止得到的
编辑:陈金诺回答后代码更新,但问题仍然存在。
Grid g = new Grid();
VlcControl p = new VlcControl();
p.Media = new PathMedia(@"C:'movie.mkv");
VisualBrush vbr = new VisualBrush();
g.Background = vbr;
vbr.Stretch = Stretch.Uniform;
Binding binding = new Binding("VideoSource");
binding.ElementName = "p";
Image img = new Image();
img.SetBinding(Image.SourceProperty, binding);
vbr.Visual = img;
g.Children.Add(p);
this.grid1.Children.Add(g);
p.Play();
有了上面的代码,当我运行应用程序时,我可以听到电影的声音,但看不到它。我错过了图像绑定(elementname和路径)在我的代码后面,但不知道如何做到这一点。有人能告诉我一些文档(谷歌没有产生任何好的结果)或提供指针转换绑定在XAMl到它的等效代码后面?
多谢
Binding binding = new Binding("VideoSource");
binding.ElementName = "myVlcControl";
Image img = new Image();
img.SetBinding(Image.SourceProperty, binding);
我知道这个问题很老了,但我刚刚遇到了同样的问题,想分享一下解决方案。
其实Chen Kinnrot的答案是相当完整的,唯一需要做的就是修复绑定。
代替:
binding.ElementName = "myVlcControl";
应该是:
binding.Source = p; // p - the instance of the VlcControl
并与Chen代码组合:
Binding binding = new Binding("VideoSource");
binding.Source = p;
Image img = new Image();
img.SetBinding(Image.SourceProperty, binding);