gpt4 book ai didi

wpf - 如何在ItemsControl中设置MouseBinding

转载 作者:行者123 更新时间:2023-12-03 10:36:16 25 4
gpt4 key购买 nike

我想在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>

那是行不通的,不会调用命令。怎么做?

最佳答案

DataContext中的隐式ItemTemplate是当前数据项。但是OpenTasks不是每个数据项的一部分。正如您在评论中所说,它是 View 模型的一部分。因此,在这种情况下,您必须为Binding设置一些带有RelativeSource的显式源。它有助于在视觉树上行走并定位所需的源。在这种情况下,您需要DataContextItemsControl。代码应如下所示:

<MouseBinding Command="{Binding DataContext.OpenTasks,
RelativeSource={RelativeSource AncestorType=ItemsControl}}"
MouseAction="LeftClick"/>

关于wpf - 如何在ItemsControl中设置MouseBinding,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26830337/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com