2011-06-05 11 views
8

Dinamik olarak oluşturulmuş menü öğeleri listesini nasıl doğru şekilde bağlarım? Birkaç şey denedim ama hiçbiri işe yaramıyor. Uygun isimler listesini aldım, ancak ViewSwitchCommand'ım doğru şekilde görüntülenmiyor. i dinamik olarak yapmak ve bu şekilde yapmazsakMenü öğelerini doğru bir şekilde nasıl bağlarım?

<MenuItem Foreground="White" Header="Names" ItemsSource="{Binding Player.ToonNames}" Command="{Binding ViewSwitchCommand}" CommandParameter="{Binding Header}"/> 

Ancak o zaman her şey o emin değil .. komut parametresi bir dize bekliyor

<MenuItem Foreground="White" Header="Names"> 
<MenuItem Foreground="Black" Header="Chat" Command="{Binding ViewSwitchCommand}"  CommandParameter="player1" /> 
<MenuItem Foreground="Black" Header="Craft" Command="{Binding ViewSwitchCommand}" CommandParameter="player2" /> 
</MenuItem> 

işe alabilirsiniz gayet güzel çalışıyor o umarım bu ben sadece

cevap

16

Bu kod bakan istediğim basit bir şeydir ... benim için çalışıyor:

<MenuItem Header="Names" ItemsSource="{Binding Player.ToonNames}"> 
    <MenuItem.ItemContainerStyle> 
     <Style TargetType="MenuItem"> 
      <Setter Property="Command" Value="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=MenuItem}, Path=DataContext.ViewSwitchCommand}" /> 
      <Setter Property="CommandParameter" Value="{Binding}" /> 
     </Style> 
    </MenuItem.ItemContainerStyle> 
</MenuItem> 
+0

bir adım daha yakın efendim. Komutu şimdi kovuyorum, ancak o ToonNames listesi doldurulmadığı zaman ... ancak isimleri uygun sayıda alan yaratıyormuş gibi görünüyor ... sadece başlık bilgisi yok. ToonNames'in GözlemlenebilirKoleksiyonun poco

+0

@poco olduğunu söylemenize yardımcı olabilirsiniz, başlangıçta böyle demiş olmalısınız, kodunuzun nasıl göründüğünü bilmek için kristal kürem yok. Güncellenmiş cevaba bakınız. – svick

+5

kristal toplar çok yardımcı efendim, onlara bakmak gerekir! En son kodunuzu test etme şansım olmadı, ancak ilk düzenlemenizden yararlanabildi, yardımlarınız için teşekkürler – poco