我最近开始学习使用C#的windows phone 8.1开发。直到上周,我还没有C#或XAML的经验。使用C#在XAML中更改按钮的图像
我试图改变一个按钮图像如下(XAML)看到
<Button x:Name="playButton"
VerticalAlignment="Stretch"
Click="Button_Click">
<StackPanel Orientation="Horizontal">
<Image x:Name="controlImg" Source="/Assets/Media-Play.png" />
<TextBlock Text=" Play" />
</StackPanel>
</Button>
初始图像是一个“播放”图标,它说玩文字。这可以正常工作和渲染。但是,当按钮被点击到“暂停”图标和说暂停的文本时,我想要更改该图像。
这里是我的C#代码到目前为止
private mediaState medState = mediaState.Stopped;
public BitmapImage iconStop = new BitmapImage(new Uri("ms-appx:///Assets/Media-Stop.png", UriKind.RelativeOrAbsolute));
public BitmapImage iconPause = new BitmapImage(new Uri("ms-appx:///Assets/Media-Pause.png", UriKind.RelativeOrAbsolute));
public BitmapImage iconPlay = new BitmapImage(new Uri("ms-appx:///Assets/Media-Play.png", UriKind.RelativeOrAbsolute));
private void Button_Click(object sender, RoutedEventArgs e)
{
switch (medState)
{
case mediaState.Playing:
medState = mediaState.Paused;
mediaE.Pause();
playButton.Content = " Play";
controlImg.Source = this.iconPlay;
break;
case mediaState.Paused:
medState = mediaState.Playing;
mediaE.Play();
playButton.Content = " Pause";
controlImg.Source = this.iconPause;
break;
case mediaState.Stopped:
medState = mediaState.Playing;
mediaE.Play();
playButton.Content = " Pause";
controlImg.Source = this.iconPause;
break;
default:
break;
}
}
public enum mediaState
{
Playing,
Paused,
Stopped
}
mediaE
是MediaElement的对象。 目前,当您单击按钮上的文字变化,但在按钮图像不消失
我已经试过到目前为止:
我检查了MSDN文章使用BitmapImage
和其他一些问题,在这里和平时说这句话
// Create source
BitmapImage myBitmapImage = new BitmapImage();
// BitmapImage.UriSource must be in a BeginInit/EndInit block
myBitmapImage.BeginInit();
myBitmapImage.UriSource = new Uri(@"C:\Documents and Settings\All Users\Documents\My Pictures\Sample Pictures\Water Lilies.jpg");
但我的视觉工作室甚至不承认BitmapImage.BeginInit()
为有效的功能。
我还检查了这个问题:BitmapImage missing BeginInit() and EndInit() function?答案表示类没有以相同的方式实现Windows Phone。检查该课程的Windows手机文档(http://msdn.microsoft.com/en-us/library/windowsphone/develop/system.windows.media.imaging.bitmapimage%28v=vs.105%29.aspx)没有显示任何明确的方式来实现我想要的。
注:我正在开发的Windows Phone 8.1。请任何帮助,将不胜感激。谢谢
@taLhaKhan我想它引发了一个异常。 –
试试这个BitmapImage bm = new BitmapImage(new Uri(@“Assets/Media-Stop.png”,UriKind.RelativeOrAbsolute)); – loop
@loop试过了。它也抛出了一个参数异常:给定的System.Uri不能转换成Windows.Foundation.Uri。 –