我有一个如下定义的列表框:
<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一样欺骗吗?
答案 0 :(得分:1)
可能是因为绑定失败了。检查VS的输出窗口,查看是否存在绑定错误。我怀疑LoadSimpleMoviePopupCommand
属性不在您的数据项类上(即您的Media
类)。
答案 1 :(得分:0)
有同样的问题,试试这个
<Button Command="{Binding DataContext.YourCommand,RelativeSource={RelativeSource AncestorType={x:Type ListBox}}}"
这很正常,他在列表框中找不到你的命令绑定,因为你设置了类似
的东西<DataTemplate DataType ...
在该列表框中,所以他将在数据类型中寻找该绑定而不是viewmodel(我假设:)