2013-06-19 15 views
6

Tamam ... Bir çocuk ItemsControl veri şablonunun içinden bir ebeveyne itemscontrol özelliklerini bağlamak gerekiyor:WPF çocuk ItemsControl veri şablonunun içinden ana ItemsControl bağlanma

<ItemsControl ItemsSource="{Binding Path=MyParentCollection, UpdateSourceTrigger=PropertyChanged}"> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 

       <ItemsControl ItemsSource="{Binding Path=MySubCollection}"> 
        <ItemsControl.ItemTemplate> 
         <DataTemplate> 
          <TextBlock Text="{Binding Path=MyParentCollection.Value, UpdateSourceTrigger=PropertyChanged}"/> 
         </DataTemplate> 
        </ItemsControl.ItemTemplate> 
       </ItemsControl> 

     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 

şu tiptedir en o MyParentCollection (dış toplama) varsayalım:

public class MyObject 
{ 
    public String Value { get; set; } 
    public List<MyChildObject> MySubCollection { get; set; 
} 

Ve yukarıdaki sınıf şu tiptedir gelen en o MyChildObject varsayalım:

public class MyChildObject 
{ 
    public String Name { get; set; } 
} 

İç veri şablonunun içinden MyParentCollection.Value öğesine nasıl bağlanabilirim? Her iki seviyenin de aynı türleri kullandıkları için FindAncestor türünü kullanamıyorum. Belki dış koleksiyona bir isim koyabilirim ve iç bağlamada bir ElementName etiketi kullanabilirim, ama yine de mülkiyeti çözemedim.

Herhangi bir düşünce? Ben ItemsControl

<DataTemplate> 

      <ItemsControl ItemsSource="{Binding Path=MySubCollection}" Tag="{Binding .}"> 
       <ItemsControl.ItemTemplate> 
        <DataTemplate> 
         <TextBlock Text="{Binding Path=Tag.Value, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"/> 
        </DataTemplate> 
       </ItemsControl.ItemTemplate> 
      </ItemsControl> 

    </DataTemplate> 

onun test edilmedi çalışmak ancak doğru yönde bir ipucu verebilir ...

+0

FindAncestor modunu kullanamaz ve hem Type hem de Ancestor düzeyini belirtebilir misiniz? –

+0

hmmm, atası seviyesini bile düşünmedim ... Şu an bakacağım –

+0

Bunu işe yaramayacak gibi görünüyorum, ah evet –

cevap

12

çocuğun etiketinde ana öğesi kaydetme bu bir şaşırıp :)

+0

Bu umut verici görünüyor ... Bunu daha sonra karıştırıyorum nasıl çalıştığını anlamanıza yardımcı olur –

+0

Test edilmiş ve bu gerçekten mükemmel çalışıyor ... test edilmemiş ama çalışan kodlar için kudos, hiçbir şey gerçekten kodunuzdan değiştirilmemelidir –

+0

Günün hack, ama yine de günü kurtardı. Çok teşekkür ederim! Etiketlemenin bağlayıcılığın bağlayıcılığa bir atıfta bulunmasını ve bağlamda neyin yinelenmediğini umarım. –

İlgili konular