Kodumuzda, ebeveynlere bağlı olmayan açılır pencereleri gösterdiğimiz birçok yer var. Başka bir deyişle, ekranda aynı anda 2 veya 3 popup olması normaldir. Şu anda görüntülenen tüm pop-up'ları sıralamak mümkün mü? VisualTreeHelper kullanarak Window.Current.Content gelen tüm öğeleri numaralandırma yardımcı olmuyor. Sadece mantıksal ağaçta olan elementleri döndürür. Bir XAML'ye bir pop-up yerleştirilirse sonuçta olacaktır. Kodda başlatılırsa olmaz. Şu anda görüntülenen tüm popup'ları bulmam gerekiyor. Nasıl yapılır?Tüm Popup pencereleri nasıl numaralandırılır?
0
A
cevap
0
Popup
, Çocuğun kendi içinde barındırılamaz. Popup
'un Çocukları, PopupRoot
içinde barındırılmaktadır. Bunu Live Visual Tree
'da görebilirsiniz.
Aşağıdaki kodu görebilirsiniz: resimden
TextBlock text = new TextBlock();
text.Text = "Hello";
TextBlock text2 = new TextBlock();
text2.Text = "Hello world";
var objPopup = new Popup()
{
Child = text,
IsOpen = true
};
var objPopup2 = new Popup()
{
Child = text2,
IsOpen = true
};
, sen Button
RootScrollViewer
olduğunu ve Popup
çocukları PopupRoot
Popup
gösterileceği görebilirsiniz görüntülenir.
Eğer pop-up görüntülenir eğer sen Popup
tüm almak için foreach
kullanabilirsiniz collection.That için Popup
ekleyebilir geçici bir çözüm olarak, o zaman bilmek Popup.IsOpen
kullanabilirsiniz tüm anda görüntülenen pop-up numaralandırmak isterseniz . Örneğin
:
public ObservableCollection<Popup> popups;
public MainPage()
{
this.InitializeComponent();
TextBlock text = new TextBlock();
text.Text = "Hello";
TextBlock text2 = new TextBlock();
text2.Text = "Hello world";
var objPopup = new Popup()
{
Child = text,
IsOpen = true
};
var objPopup2 = new Popup()
{
Child = text2,
IsOpen = true
};
objPopup.HorizontalOffset = 100;
objPopup2.HorizontalOffset = 600;
popups = new ObservableCollection<Popup>();
popups.Add(objPopup);
popups.Add(objPopup);
foreach (var item in popups)
{
if (item.IsOpen == false)
{
item.IsOpen = true;
}
}
}
0
Sen VisualTreeHelper
sınıfını, özellikle GetOpenPopups
yöntemi kullanabilirsiniz.
Kullanımı oldukça kolay olmalı. Şunun gibi bir şey deneyin:
var listOfOpenPopups = VisualTreeHelper.GetOpenPopups(Window.Current);