使用MVVM Light从Combobox中的按钮发射命令

时间:2012-05-22 14:13:55

标签: wpf button mvvm combobox command

我遇到自定义ComboxBox触发事件的问题。我们的想法是将组合框绑定到一个项目集合,其中每个项目都包含一个“编辑”和“删除”按钮。我可以使用代码隐藏使点击事件工作,但命令绑定似乎什么都不做。

    <ComboBox SelectedIndex="0">
                <ComboBox.ItemTemplate>
                    <DataTemplate>
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="200"/>
                                <ColumnDefinition Width="auto"/>
                            </Grid.ColumnDefinitions>
                        <TextBlock Text="{Binding Name}"/>
                            <StackPanel Grid.Column="1" 
                                        Orientation="Horizontal"
                                        HorizontalAlignment="Right">
                                <Button Content="Edit" 
                                        Margin="0,0,5,0" 
                                        Command="{Binding EditConnectionCommand}"
                                        CommandParameter="{Binding ID}"/>
                                <Button Content="Delete"
                                        Command="{Binding DeleteConnectionCommand}"
                                        CommandParameter="{Binding ID}"/>
                            </StackPanel>
                        </Grid>
                    </DataTemplate>
                </ComboBox.ItemTemplate>
                <ComboBox.ItemsSource>
                    <CompositeCollection>
                        <ComboBoxItem IsEnabled="False" Visibility="Collapsed">Select a database connection...</ComboBoxItem>
                        <CollectionContainer Collection="{Binding Source={StaticResource ConnectionsBridge}}" />
                        <ComboBoxItem>...New Connection...</ComboBoxItem>
                    </CompositeCollection>
                </ComboBox.ItemsSource>
            </ComboBox>

1 个答案:

答案 0 :(得分:3)

您的绑定会查找项目中的命令,而不是窗口的ViewModel中的命令 要更改此设置,请按以下方式修复绑定:

{Binding ElementName=root, Path=DataContext.EditConnectionCommand}

为此,您需要将Name="root"添加到UserControlWindow