2011-06-05 104 views
8

如何正確綁定動態創建的菜單項列表。我已經嘗試了幾件事,但似乎沒有任何工作。我得到正確的名稱列表,但是我的ViewSwitchCommand似乎沒有正確啓動。如何正確綁定菜單項?

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

但是如果我不這樣做,動態和不喜歡這樣,然後一切工作就好了可以得到它的工作

<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> 

命令參數需要一個字符串..不知道如果這是...希望這是一些簡單的我只是俯瞰

回答

16

此代碼的工作對我來說:

<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

一步更近的先生。我現在正在發佈命令,但是當列表o ToonNames沒有被填充時...但是它看起來好像是爲正確的名稱創建空間..只是沒有標題信息。可能有助於告訴你,ToonNames是ObservableCollection poco 2011-06-06 00:38:23

+0

@poco,你應該在開始時這麼說,我沒有一個水晶球來知道你的代碼的外觀。查看更新的答案。 – svick 2011-06-06 02:03:27

+5

水晶球是非常有用的先生,你應該看看他們!我沒有機會測試你的最新代碼,但能夠從你的第一次編輯中得到它,感謝你的幫助 – poco 2011-06-06 15:09:21