WPF命令按钮ListBoxItems

时间:2009-11-05 13:41:00

标签: wpf binding command listboxitem

我有一个如下定义的列表框:

<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时,不会调用命令,但在调用click事件时,会引发事件。

你知道为什么吗?这是正常的行为吗?我们必须像ListBoxItem doubleclick一样欺骗吗?

2 个答案:

答案 0 :(得分:1)

可能是因为绑定失败了。检查VS的输出窗口,查看是否存在绑定错误。我怀疑LoadSimpleMoviePopupCommand属性不在您的数据项类上(即您的Media类)。

答案 1 :(得分:0)

有同样的问题,试试这个

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

这很正常,他在列表框中找不到你的命令绑定,因为你设置了类似

的东西
<DataTemplate DataType ...

在该列表框中,所以他将在数据类型中寻找该绑定而不是viewmodel(我假设:)