2

カスタム 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>
4

1 に答える 1

3

バインディングは、ウィンドウの ViewModel ではなく、アイテム内のコマンドを探します。
これを変更するには、バインディングを次のように修正します。

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

Name="root"これが機能するには、UserControlまたはに追加する必要がありますWindow

于 2012-05-22T14:19:44.747 に答える