[英]Popup in windows phone 8
我想顯示一個帶有media元素作為一個控件的彈出窗口。 當用戶點擊按鈕時,我必須顯示此彈出窗口。 當用戶點擊設備的后退按鈕時,應該關閉彈出窗口。
請幫我在windows phone 8應用程序中如何做到這一點。
使用MediaElement彈出窗口(視圖是PhoneApplicationPage
名稱)
<Popup
x:Name="popup">
<Grid
Background="{StaticResource PhoneChromeBrush}"
Height="{Binding Path=ActualHeight, ElementName=view}"
Width="{Binding Path=ActualWidth, ElementName=view}">
<MediaElement />
</Grid>
</Popup>
應用欄
<phone:PhoneApplicationPage.ApplicationBar>
<shell:ApplicationBar>
<shell:ApplicationBarIconButton
Click="ShowPopup"
IconUri="/Icons/show.png"
Text="show" />
</shell:ApplicationBar>
</phone:PhoneApplicationPage.ApplicationBar>
代碼背后
protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
{
if (this.popup.IsOpen)
{
this.popup.IsOpen = false;
e.Cancel = true;
}
base.OnBackKeyPress(e);
}
private void ShowPopup(object sender, EventArgs e)
{
this.popup.IsOpen = true;
}
你必須創建一個Popup
控件並且必須將你的媒體元素設置為它的Child
Property.And來處理Back Key按下使用OnBackKeyPress overriden事件。
請看下面的樣本。
private Popup _popup;
private void Button_Click(object sender, System.Windows.RoutedEventArgs e)
{
Grid g=new Grid {Height = 400,Width = 480,Background =new SolidColorBrush(Colors.Green)};
Rectangle r = new Rectangle
{
Height = 50,
Width=50,
Fill = new SolidColorBrush(Colors.Red),
HorizontalAlignment = HorizontalAlignment.Center,
VerticalAlignment = VerticalAlignment.Center
};
g.Children.Add(r);
_popup = new Popup()
{
Height = 400,
Width = 480,
IsOpen = true,
Child = g
};
}
protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
{
if (_popup != null)
{
if (_popup.IsOpen)
{
e.Cancel = true;
_popup.IsOpen = false;
}
}
}
當你按回鍵時,你應該檢查彈出窗口是否打開? 如果彈出窗口打開則阻止后退鍵操作。 所以像這樣重寫OnBackKeyPress()
:
protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
{
if (this.popup.IsOpen)
{
this.popup.IsOpen = false;
e.Cancel = true;
}
base.OnBackKeyPress(e);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.