如何将命令绑定到列表框项?

时间:2015-10-05 22:13:48

标签: c# wpf data-binding listbox

我有一个列表框。我将Listbox的ItemSource绑定到列表。

在ItemTemplate中,我希望能够为每个项添加一个MouseBinding。

这是我到目前为止所拥有的:

<ListBox.ItemTemplate>
    <DataTemplate>
        <Border Background="Blue" CornerRadius="8" >
            <Border.InputBindings>
                <MouseBinding MouseAction="LeftClick" Command="{Binding Test}" CommandParameter="{Binding PropertyOfClickItem}" />
            </Border.InputBindings>
            <TextBlock Foreground="White" FontSize="24" FontWeight="Bold" Margin="5">
                <TextBlock.Text>
                    <MultiBinding StringFormat="{}{0}, {1} &#x0a;Seat: {2}">
                        <Binding Path="LastName" />
                        <Binding Path="FirstName" />
                        <Binding Path="Seat" />
                     </MultiBinding>
                 </TextBlock.Text>
             </TextBlock>
         </Border>

      </DataTemplate>
</ListBox.ItemTemplate>

我很困惑,因为我似乎只能绑定到ItemSource中的内容,但我的“Test”命令不在其中。如何绑定到View的ViewModel中的Command,而不是绑定到Listbox的ItemSource?

不仅如此,我希望能够将所选项的属性传递给命令。这可能吗?

2 个答案:

答案 0 :(得分:2)

您可以使用绑定的RelativeSource属性来获取具有所需DataContext的祖先。例如:

react-routes

答案 1 :(得分:0)

使用像clcto这样的相对来源。

在这里寻找完整的答案: WPF "static" binding in a List