我想在TextBlock上调用click命令,我就这样做
<TextBlock Text="New Project">
<TextBlock.InputBindings>
<MouseBinding Command="{Binding Path=NewProject}" MouseAction="LeftClick"/>
</TextBlock.InputBindings>
</TextBlock>
这是有效的,但我想在ItemsControl中做同样的事情,所以
<ItemsControl Margin="8" ItemsSource="{Binding Path=Projects}" Grid.Row="1" >
<ItemsControl.ItemTemplate>
<DataTemplate>
<WrapPanel>
<TextBlock Text="{Binding Name}" Style="{StaticResource ClickableTextBlock}" >
<TextBlock.InputBindings>
<MouseBinding Command="{Binding Path=OpenTasks}" MouseAction="LeftClick"/>
</TextBlock.InputBindings>
</TextBlock>
</WrapPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
这不起作用,不会调用命令。怎么做?
答案 0 :(得分:1)
DataContext
内的隐式ItemTemplate
是当前数据项。但OpenTasks
不是每个数据项的一部分。正如您在评论中所说,它是您的视图模型的一部分。因此,在这种情况下,您必须为绑定设置一些RelativeSource
的显式源。它有助于走向可视树并定位您想要的源。在这种情况下,您需要DataContext
的{{1}}。代码应该是这样的:
ItemsControl