2010-12-02 47 views
0

我有一個列表框綁定到名爲Choices的視圖模型屬性。每個選項都有一個標籤和一個索引。我需要將列表中的按鈕綁定到同一視圖模型上的命令。到目前爲止,香港專業教育學院想出了很多這樣的:按鈕和相對源的列表框

<ListBox Grid.Row="1" ItemsSource="{Binding Choices}" SelectedIndex="{Binding SelectedChoice, Mode=TwoWay}" > 
    <ListBox.ItemTemplate> 
    <DataTemplate> 
     <Grid HorizontalAlignment="Stretch" Margin="1"> 
     <Button Content="{Binding Caption}" Height="24" HorizontalAlignment="Stretch" 
       Command="{Binding RelativeSource={RelativeSource ???}, 
            Path=SelectChoice}" CommandParameter="{Binding}"/> 
     </Grid> 
    </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

我無法弄清楚什麼的RelativeSource使用的命令,我不知道CommandParameter是正確的。

這似乎是一件非常簡單的事情,但對於我可憐的老腦子來說顯然太簡單了。任何人都可以幫忙嗎?

感謝

回答

2

排序:

<ItemsControl Grid.Row="1" ItemsSource="{Binding Choices}" > 
    <ItemsControl.ItemsPanel > 
    <ItemsPanelTemplate > 
     <StackPanel Orientation="Horizontal" HorizontalAlignment="Center"> 
     </StackPanel> 
    </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
    <ItemsControl.ItemTemplate> 
    <DataTemplate> 
     <Button Content="{Binding Caption}" Height="24" HorizontalAlignment="Stretch" Margin="0,0,4,0" 
       Command="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ItemsControl}}, Path=DataContext.SelectChoice}" 
       CommandParameter="{Binding}"/> 
    </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl>