J'ai ListBox. quand je clique sur l'élément ListBox je dois montrer l'information d'article dans le popup Mais il ne ferme pas après avoir cliqué dehors. Je crée un popup dans l'événement itemsselected. comment gérer popup fermer?Comment fermer popup dans silverlight?
Répondre
Je ne suis pas sûr de ce que vous entendez par "cliquer sur le côté" parce que les fenêtres contextuelles agissent de façon modale.
Vous devez configurer votre fenêtre contextuelle comme ChildWindow. Ensuite, vous pouvez gérer l'événement Closed.
Voici un exemple très simple qui montre une chaîne sélectionnée à partir d'une liste dans une fenêtre principale.
D'abord la fenêtre principale:
<UserControl x:Class="PopupTest.MainPage"
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"
d:DesignHeight="300" d:DesignWidth="400">
<Grid x:Name="LayoutRoot" Background="White">
<StackPanel Orientation="Vertical">
<ListBox x:Name="SomeList" Width="100" Height="100" />
<TextBlock x:Name="DialogResult" Width="100" />
</StackPanel>
</Grid>
Dans le codebehind, la fenêtre est déclenchée lorsque la sélection change de liste. Il suffit de configurer un gestionnaire fermé. Dans cet exemple, je mets simplement l'élément de liste choisi dans un bloc de texte, puis à la fermeture du popup, je mets simplement le résultat de la boîte de dialogue dans un bloc de texte dans la fenêtre principale (pour montrer si l'utilisateur a poussé ok ou annuler).
public MainPage()
{
InitializeComponent();
SomeList.SelectionChanged += new SelectionChangedEventHandler(SomeList_SelectionChanged);
SomeList.Items.Add("one");
SomeList.Items.Add("two");
SomeList.Items.Add("three");
}
void SomeList_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var popup = new SomePopup();
popup.Closed += new EventHandler(popup_Closed);
popup.ChosenItem.Text = (string)SomeList.SelectedItem;
DialogResult.Text = "";
popup.Show();
}
void popup_Closed(object sender, EventArgs e)
{
var popup = sender as SomePopup;
if (popup.DialogResult == true)
DialogResult.Text = "Ok";
else
DialogResult.Text = "Cancel";
}
La fenêtre contextuelle se ferme lorsque l'utilisateur appuie sur OK ou Annuler, parce que la valeur DialogResult est définie dans le code-behind de la fenêtre contextuelle:
private void OKButton_Click(object sender, RoutedEventArgs e)
{
this.DialogResult = true;
}
private void CancelButton_Click(object sender, RoutedEventArgs e)
{
this.DialogResult = false;
}
Les popups ne sont pas modaux, la liste déroulante d'un ComboBox est un Popup. – AnthonyWJones
Je n'ai pas dit qu'ils l'étaient. J'ai dit qu'ils agissent de façon modale. Lorsque vous appelez Show() sur un ChildWindow, l'arrière-plan est déclicable lorsque le popup est en place. –
On dirait que vous confondez ChildWindow avec Popup ce sont deux choses différentes. Une fenêtre ChildWindow est un contrôle basé sur un modèle qui inclut un panneau de superposition qui empêche les autres contrôles de recevoir des entrées. Un Popup est un conteneur de contrôle léger placé au-dessus de la zone de contenu à un décalage spécifié lorsque IsOpen est défini sur true. Le reste de l'interface utilisateur qui l'entoure recevra toujours des informations. – AnthonyWJones
Une approche est de créer une toile avec un fond transparent vous rendre visible en même temps que l'ouverture du Popup et attacher à est l'événement de souris vers le bas pour fermer le popup. Comme ceci: -
Xaml: -
<Grid x:Name="LayoutRoot" Background="White" >
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Popup x:Name="MyPopup" Closed="MyPopup_Closed" HorizontalOffset="100" VerticalOffset="100" Opened="Popup_Opened">
<ListBox x:Name="PopupChild" MaxHeight="300" LostFocus="PopupChild_LostFocus">
<sys:String>Hello World</sys:String>
</ListBox>
</Popup>
<Button Content="Open Popup" Grid.Row="1" Click="Button_Click" />
<Canvas x:Name="PopupOpen" Visibility="Collapsed" Background="Transparent" Grid.RowSpan="2" MouseLeftButtonDown="PopupOpen_MouseLeftButtonDown" />
</Grid>
Code: -
private void Button_Click(object sender, RoutedEventArgs e)
{
MyPopup.IsOpen = true;
}
private void Popup_Opened(object sender, EventArgs e)
{
PopupOpen.Visibility = Visibility.Visible;
}
private void PopupChild_LostFocus(object sender, RoutedEventArgs e)
{
MyPopup.IsOpen = false;
}
private void PopupOpen_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
MyPopup.IsOpen = false;
}
private void MyPopup_Closed(object sender, EventArgs e)
{
PopupOpen.Visibility = Visibility.Collapsed;
}
Notez que son important que si votre pop-up contient un contrôle qui peut recevoir le focus que vous gérez également LostFocus
.
Ceci est similaire à une question que j'avais. Jetez un oeil à How to dismiss a popup in Silverlight when clicking outside of the control?. J'ai posté dans ma solution une méthode d'extension qui a été très utile pour fermer les popups lorsque vous cliquez en dehors d'eux.
- 1. Comment fermer la popup dans jquery
- 2. WPF Popup fermer automatiquement
- 3. Fermer popup (div) jquery
- 4. Jquery Effacer Popup sur Fermer
- 5. Événement MouseLeave dans Silverlight 3 Contrôle PopUp
- 6. Fermer Popup lorsque le focus est perdu
- 7. Silverlight popup ActualSize
- 8. Silverlight - Bring Popup Front
- 9. Fermer un popup modal de vb.net?
- 10. Silverlight Browser Fermer l'événement
- 11. Comment fermer Modal popup Extender à partir du côté serveur
- 12. Comment fermer une fenêtre Silverlight hors navigateur?
- 13. Comment fermer ma popup popup une fois que le bouton submit clique?
- 14. Popup sur l'inactivité Silverlight 2.0
- 15. Problème de contrôle popup silverlight
- 16. Comment positionner popup dans un événement click avec silverlight 4?
- 17. Silverlight Fermer/Annuler le bouton
- 18. Intercept fermer Popup à partir de la page parent
- 19. effet modal popup de silverlight usercontrol
- 20. Zone de texte avec une popup dans Silverlight
- 21. HighSlide Fermer
- 22. Silverlight Popup UserControl - Fonctionne une seule fois, puis se bloque
- 23. ajouter fermer le bouton
- 24. Popup box avec une minuterie
- 25. open popup dans IE
- 26. Programmer fermer ListPicker à partir de WP7 Silverlight Toolkit
- 27. comment montrer l'image popup
- 28. Comment puis-je fermer ChildWindow dans silverlight à partir de la page?
- 29. fenêtre popup dans ie8
- 30. Fermer WPF PopUp en cliquant sur la barre de titre de fenêtre
Comment créez-vous le popup? Si c'est à travers childwindow, vous devriez être capable de le fermer. pls clarifier. – funwithcoding