XAML'de, öğelerin varsayılan sırası, bunların biçimlendirmede nasıl göründüğünün tersidir (XAML'deki son öğe yığınının üstünde görünür).
Bir test olarak, aşağıdakileri yazdım.
XAML:
<Window x:Class="Order.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Canvas Name="LayoutTest" Margin="0">
<Label Background="Red" Margin="0,0,0,0" Content="Added in XAML"/>
</Canvas>
</Grid>
</Window>
Kodu:
public MainWindow()
{
InitializeComponent();
for (int i = 0; i < 10; i++)
{
Label lbl = new Label();
lbl.Height = 100d;
lbl.Width = 100d;
lbl.MouseLeftButtonUp += rec_MouseLeftButtonUp;
lbl.Content = "Label number " + i.ToString();
lbl.Background = Brushes.White;
lbl.Foreground = Brushes.Black;
LayoutTest.Children.Add(lbl);
}
}
void rec_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
Label obj = sender as Label;
if (null == obj) return;
obj.Visibility = Visibility.Collapsed;
}
sonuç XAML ilave ürün, yukarıda tarif edilen sırayla, kümenin altındaki bir görünür oldu. Kodda eklenen öğeler, bunların üst kısmında görünür ve siparişleri, eklendikleri sıraya göre belirlenir - ilk öğe, eklendikçe yığının yukarısına yükselen belirli siparişin altında yer alır.
Yani, kazık "alt" nde ... kadar
"Etiket numarası 0"
"Etiket 1 numara",
ardından
"XAML eklendi" etiketi olan ...
"Etiket numarası 9" en üstteki, hemen görünür öğe.
Bother! Yanlış şeyi kanıtlamak için 10 dakika harcadım. ;) Roy C'nin cevabı muhtemelen sizin aradığınız şeydir, ama biraz şansla, bu cevap birileri için bir kullanım olacaktır.
Ayrıca? Ayrıca ne sonrası? Mesaj siparişi burada düzeltilmedi. –
İlk başta bunu farketmedim. Bunu kaldırmak için düzenlenmiştir. Teşekkürler! – Roy
'Canvas.ZIndex, yalnızca Canvas ile değil, diğer konteynerlerle de çalışır. [Yanıtım] bölümüne bakın (http://stackoverflow.com/questions/5474293/windows-phone-7-stack-order-of-images/5474733#5474733). –