我有两个窗口(win1和win2)。在win1.xaml中,我有一个媒体元素,我尝试从win2 C#源代码调用它,这迫使我拥有一个静态媒体元素。
所以我使用绑定来填充源,但是要将方法调用为mediaelement.play(),我该怎么做呢?因为媒体元素是在xaml中声明的,并且不是静态的。
谢谢你的帮助。
win1.xaml
<Grid x:Name="LayoutRoot" Width="630" Height="460" VerticalAlignment="Top" HorizontalAlignment="Left">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="626"></ColumnDefinition>
<ColumnDefinition Width="24*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<StackPanel Height="440" Width="620" HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="0,0,2,-12">
<StackPanel Height="350" Width="587" Background="White" Margin="0,10,0,0">
<!-- MediaElement -->
<MediaElement Margin="10,11,10,0" Name="MediaElement1" Source="{Binding MediaElement1Source, Source={x:Static bindableSettings:BindingManager.Instance}}"
Width="565" Height="330" LoadedBehavior="Manual" UnloadedBehavior="Close" Stretch="Fill" />
</StackPanel>
</StackPanel>
</Grid>win1.xaml.cs MediaElement初始化和其他一些东西
win2.xaml只是一个调用函数的按钮
win2.xaml.cs namespace MyApp { public partial class win2 : Window { public win2() { InitializeComponent(); }
public static void MediaElement1_Play()
{
MessageBox.Show("MediaElement1_Play Called");
win1.MediaElement1.Play();
MessageBox.Show("MediaElement1_Play Exited");
// Other statics stuff
}
}}
发布于 2019-07-23 23:23:49
我也尝试使用静态媒体元素(在后面的代码中将其定义为静态类成员)。它编译正常,但没有声音播放。我不知道为什么--也许你们中的一些专家会理解?我放弃了静态的想法,回到了将它包含在每个窗口的代码中。(这并不理想,因为我有一段代码来处理它--在我的例子中播放通知声音--现在我在每个窗口中都复制了这段代码。)如果有人有更好的解决方案,我很乐意听听。
https://stackoverflow.com/questions/15041840
复制相似问题