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