2011-05-09 7 views
6

datatemplate Program kutusunun içinde .xaml dosyasında bazı öğe şablonları, veri şablonları ve ciltleme var. Kodu arkada oluşturmak için herhangi bir yolu var mı?ListBox.Itemtemplate nasıl oluşturulur, Windows Phone 7

Programlı olarak veri şablonları oluşturmanın bir yolu var mı?

bu XAML CODE ANCAK ben itemtemplatem ekleyerek çünkü dinamik liste kutusu oluşturma çalışıyorum, XAML değil C# kullanarak kodda ihtiyaç datatemplate

<ListBox Height="520" HorizontalAlignment="Left" Margin="0,6,0,0" Name="lstimge" VerticalAlignment="Top" Width="450" > 
       <ListBox.ItemTemplate> 
        <DataTemplate> 
         <StackPanel Orientation="Horizontal"> 
          <Image Source="{Binding Image}" Width="150" Stretch="Uniform" HorizontalAlignment="Center" /> 
          <TextBlock Text="{Binding FileName}" TextWrapping="Wrap" /> 
         </StackPanel> 
        </DataTemplate> 
       </ListBox.ItemTemplate> 
      </ListBox> 

Lütfen çözüm vermek

sayesinde Ashok

+0

Belki de bunu neden yapmak istediğinizi detaylandırabilirsiniz? Genel olarak, MVVM kavramı, herhangi bir kod olmadan görünümünüzü tanımlayabilmenizdir. – RedDeckWins

+0

, bu çok iyi bir soru için yukarıdaki düzenlenmiş soru etiketine – Ash

+0

+1 bakın. Çok iyi IDE desteğine sahip, iyi yazılmış, hızlı, güçlü bir şekilde yazılan kod için MS'nin bu açık distasta sahip olduğunu ve bunun yerine belirli bir tasarım desenini kullanmamızı, kilitli bir kum havuzunda oynamayı, stil kılavuzlarına uymayı ve şimdi de taciz etmemizi kesinlikle imkansız kılmam. Bu şişirilmiş ve esnek olmayan XML dosyaları ile bize. – UnclePaul

cevap

5

Sen kodundan şablonları inşa edemez - bu sadece XAML yapılabilir.

Kodunuzda XAML şablonunu dinamik olarak oluşturduysanız, here açıklandığı gibi yükleyebilirsiniz.

Bu rotayı izlerseniz, bir sürü solucan açacağınızı düşünürsünüz. here

+0

@ Damian Mehers: Veri şablonunu kullanmadan dinamik olarak (XMAL kullanmadan) liste kutusu oluşturmanın başka bir yolu. –

+0

var listBox = new ListBox { ÖğelerSource = Assembly.GetCallingAssembly() GetTypes() }; LayoutRoot.Children.Add (listBox); – Damian

5

açıklandığı gibi alternatif olarak, daha sonra atama dinamik kod arkasında XAML yük ve bir DataTemplate için döküm XamlReader.Load kullanabilirsiniz, şablonları kümesi önceden tanımlamak ve dinamik olarak zamanında doğru bir seçim olabilir ItemTemplate'e. Here bir örnektir.

+0

@ Dennis Delimarsky: Veri kutusunu kullanmadan dinamik olarak (XMAL kullanmadan) liste kutusu oluşturmanın başka bir yolu ... –

+0

ListBox'ın kendisini dinamik olarak oluşturabilir ve görsel ağaca ekleyebilirsiniz. Şablon için XAML'ye güvenmeniz gerekecek. –

1

DataTemplate, tüm liste kutuları için kullanmak istediğiniz veya aynı zamanda dinamik olarak oluşturuldu mu? Bunların hepsi için aynı ise, o zaman bir Style in your Resources olarak kaydedebilir ve daha sonra Listbox nesnesini dinamik olarak oluşturabilir ve stili uygulayabilirsiniz.