因此,在我的App.xaml(WP8 App)中,我有一个MediaElement控件。我已经在整个WP8应用程序中成功地“循环了”。(是的,我知道我应该使用XNA Framework,但仍然使用。)
我想通过其他App页面访问它,并更改控件的各种属性,例如音量等。
但是,我不确定如何访问它?如果您还可以解释“ FindName”和“ FindResource”术语之间的区别,那就更好了。
令我感兴趣的另一件事是,假设我能够成功地将控件从特定页面返回到另一个页面,并将其存储在“ Temp_Control”(显然与检索到的控件的类型匹配)中,那么我所做的任何更改都可以做出来的“ Temp_Control”也能体现在原始控件上吗?如果没有,那我该如何实现它的设置呢?
提前谢谢了。
我在App.xaml中使用的代码是:-
<!--Application Resources-->
<Application.Resources>
<local:LocalizedStrings xmlns:local="clr-namespace:PQRS" x:Key="LocalizedStrings"/>
<Style x:Key="RootFrameStyle" TargetType="phone:PhoneApplicationFrame">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="phone:PhoneApplicationFrame">
<Grid>
<MediaElement x:Name="MediaPlayer" Source="/abcd.mp3" Volume="1" AutoPlay="True" MediaEnded="MediaPlayer_MediaEnded"/>
<ContentPresenter />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Application.Resources>
好的,这完全不是必需的,但对我有用,也应该对其他人也有用。
改变方法:-
我没有在App.xaml中设置控件,而是在App.xaml.cs中设置了控件。
最后,在Application_Startup(object sender,StartupEventArgs e)事件中,我通过以下方式将其添加到应用程序资源中:
Application.Current.Resources.Add(key,value);
如何通过其他页面访问添加的控件:
基本上需要的是简单的代码行:
var obj = App.Current as App;
使用“ obj”,您可以访问App.xaml中的控件/变量,这些控件/变量显然是全局的。
例如:-
var obj = App.Current as App;
obj.Control_Name.Control_Properties=//whatever you require
因此,总体代码如下:-
//In App.xaml.cs
public MediaElement m = new MediaElement();
private void Application_Startup(object sender, StartupEventArgs e)
{
//Set the properties of the MediaElement Control here
Application.Current.Resources.Add("1", m); //Add it to the Application Resources
}
//In MainPage.xaml.cs say for a Button Click Event
private void Button_Click(object sender, RoutedEventArgs e)
{
var obj = App.Current as App;
obj.m.Play();
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句