我有两个窗口(win1和win2)。 在win1.xaml中我有mediaelement,我尝试从win2 C#source调用它,这迫使我有一个静态的mediaelement。
所以我使用绑定来填充源代码,但是调用方法作为mediaelement.play()我该怎么做呢,因为media元素是在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>
<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 init和其他一些东西
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
}
}
答案 0 :(得分:0)
我也尝试使用静态中介元素(在后面的代码中将其定义为静态类成员)。它编译正常,但没有声音播放。我不确定为什么-也许你们当中的一些专家会理解吗?我放弃了静态想法,然后又将其包含在每个窗口的代码中。 (这不理想,因为我有一段代码可以操纵它(在我的情况下,播放通知的声音),并且我现在在每个窗口中都重复了该代码。)如果有人有更好的解决方案,我很想听听。 / p>