2011-03-29 12 views
8

Bu muhtemelen oldukça basit bir sorudur, ancak burada ya da Google'da bir şey bulamadım. Herhangi bir yardım takdir edilir.Görüntülerin yığın sırasını (z-endeksi eşdeğer)

Windows Phone 7 uygulamasında nesne yığınlarını (resim dikdörtgenleri vb) belirleyen bir özellik var mı? Bazı kodları arkasından ve bazılarını xaml'den ekliyorum. Temel olarak aradığım şey, z-endeksi özelliğidir, ancak bu mevcut görünmüyor.

cevap

8

Tuvalde nesneleriniz varsa, yığın sırasını ayarlamak için Canvas.ZIndex özelliğini kullanabilirsiniz.

+2

Ayrıca? Ayrıca ne sonrası? Mesaj siparişi burada düzeltilmedi. –

+0

İlk başta bunu farketmedim. Bunu kaldırmak için düzenlenmiştir. Teşekkürler! – Roy

+1

'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). –

1

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.

1

Ekli Canvas.ZIndex özelliğini kullanın. Sadece Canvas değil, tüm düzen kapları ile çalışmalıdır.

Büyük .NET'te aslında daha mantıklı olan Panel.ZIndex var, ancak Canvas.ZIndex WP7'de gayet iyi çalışıyor gibi görünüyor.