【问题标题】:WPF Commands Buttons ListBoxItemsWPF 命令按钮 ListBoxItems
【发布时间】:2009-11-05 13:41:00
【问题描述】:

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

<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 双击一样欺骗?

【问题讨论】:

    标签: wpf binding command listboxitem


    【解决方案1】:

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

    【讨论】:

    • 我的想法和你一样,但我试图在列表框外放一个按钮,它起作用了!因此,这意味着它不是绑定问题,而是与列表框有关的问题!
    【解决方案2】:

    遇到同样的问题,试试这个

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

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

    <DataTemplate DataType ...
    

    在那个列表框中,所以他会在数据类型而不是视图模型中寻找那个绑定(我假设:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-16
      • 1970-01-01
      • 2011-07-26
      • 2015-06-07
      • 2018-01-04
      • 1970-01-01
      • 2016-01-14
      • 2013-10-13
      相关资源
      最近更新 更多