0

私は以下のように定義されたリストボックスを持っています:

<ListBox x:Name="lstMedias" ItemsSource="{Binding Medias}" Width="Auto" Height="Auto">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Button Content="{Binding Name}" Tag="{Binding Name}" Click="Button_Click" Command="{Binding Path=LoadSimpleMoviePopupCommand}">
                <Button.Resources>
                    <Converters:LoadMovieMultiConverter x:Key="LoadMovieMultiConverter" />
                </Button.Resources>                                    
                <Button.CommandParameter>
                    <MultiBinding Converter="{StaticResource LoadMovieMultiConverter}">
                        <MultiBinding.Bindings>
                            <Binding ElementName="DragDropCanvas" />
                            <Binding Path="Tag" RelativeSource="{RelativeSource Self}" />
                        </MultiBinding.Bindings>
                     </MultiBinding>
                 </Button.CommandParameter>
              </Button>
          </DataTemplate>
      </ListBox.ItemTemplate>
</ListBox>

コマンド LoadSimpleMoviePopupCommand を呼び出そうとすると、コマンドは呼び出されませんが、クリック イベントを呼び出すと、イベントが発生します。

理由はわかりますか?それは正常な動作ですか?ListBoxItem doubleclick のようにトリックする必要がありますか?

4

2 に答える 2

1

おそらくバインディングが失敗したためです。VSの出力ウィンドウをチェックして、バインディングエラーがないかどうかを確認します。プロパティLoadSimpleMoviePopupCommandがデータアイテムクラス(つまり、Mediaクラス)にないようです。

于 2009-11-05T13:46:57.260 に答える
0

同じ問題がありました、これを試してください

<Button Command="{Binding DataContext.YourCommand,RelativeSource={RelativeSource AncestorType={x:Type ListBox}}}"

それはごく普通のことです。あなたが次のように設定したため、彼はリストボックス内であなたのコマンドバインディングを見つけることができません

<DataTemplate DataType ...

そのリストボックスで、彼はビューモデルではなくデータ型内でそのバインディングを探します(私は推測します:)

于 2011-04-29T09:03:06.893 に答える