我有我目前正在開發一個Windows Phone應用程序,和我分享按鈕會打開一個小的彈出幾個選項,使用下面的代碼:的Windows Phone關閉彈出窗口,如果水龍頭其他地方
private void share_Click(object sender, System.EventArgs e)
{
Popup share= new Popup();
share.Child = new sharePopup();
share.IsOpen = true;
share.VerticalOffset = 30;
share.HorizontalOffset = 0;
}
現在,此彈出窗口有一個「關閉」按鈕,但如果我沒有點擊它,而是點擊前一個仍然可見的頁面上的另一個按鈕,彈出窗口保持原位,即使在移動到新頁面後也是如此。我必須點擊'關閉'彈出窗口才能離開。
我在尋找的是彈出窗口關閉的方式,如果我點擊彈出窗口本身以外的任何地方。有沒有預定義的方法來做到這一點?如果沒有,我可以採取什麼方式呢?
在此先感謝
編輯:下面是彈出
public partial class sharePopup : UserControl
{
public sharePopup()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
Popup mensaje = this.Parent as Popup;
mensaje.IsOpen = false;
}
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
this.Focus();
}
private void UserControl_LostFocus(object sender, RoutedEventArgs e)
{
Popup mensaje = this.Parent as Popup;
mensaje.IsOpen = false;
}
}
}
爲彈出的XAML只包含大小,顏色和按鈕定義的C#代碼:
<UserControl x:Class="MSPinTrainingApp.sharePopup"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
d:DesignHeight="480" d:DesignWidth="480"
Width="480" Height="200" >
<Grid x:Name="LayoutRoot" LostFocus="LayoutRoot_LostFocus">
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.Background>
<SolidColorBrush Color="{StaticResource PhoneChromeColor}"/>
</Grid.Background>
<TextBlock HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
Margin="3" x:Name="txtMensaje" Text="Compartir:" LostFocus="txtMensaje_LostFocus" />
<Image Margin="70,60,335,62" Source="appbar.email.hardedge.png" Stretch="Fill" Tap="Image_Tap_1"/>
<Image Margin="200,60,200,62" Source="appbar.facebook.png" Stretch="Fill" Tap="Image_Tap_2"/>
<Image Margin="335,60,70,62" Source="appbar.twitter.bird.png" Stretch="Fill" Tap="Image_Tap_3"/>
<Image Margin="430,-12,11,134" Source="/appbar.close.png" Width="50" Tap="Image_Tap_4"/>
</Grid>
我們需要看到XAML,但它看起來像是在文本框上設置了LostFocus事件。你是否讓文本框焦點在彈出窗口顯示?如果不是,那麼LostFocus將不會在該控件上調用。 – 2013-02-22 20:12:47
你說得對,那是我的錯誤......很快發佈XAML。 – iVikD 2013-02-22 20:20:50
好的。儘管我之前的評論的其餘部分還沒有答案。你把重點放在txtMensaje上嗎?看到這個更多的信息:http://stackoverflow.com/questions/124649 – 2013-02-22 20:27:40