我的项目中有一个包含少量PathGeometries的itemscontrol,一切都运行良好。现在我想使用Interaction.Triggers将“MouseDown”事件分配给其中一个路径但是它根本没有触发命令,我找不到原因。
<ItemsControl x:Name="CSListItem" ItemsSource="{Binding Path=ColorCode}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Grid/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<VirtualizingStackPanel Orientation="Horizontal">
<Path Stroke="Black" StrokeThickness="1">
<Path.Data>
<RectangleGeometry Rect="{Binding Path=RectPoints}"/>
</Path.Data>
</Path>
<Path Fill="Black" Stroke="Black">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseDown">
<i:InvokeCommandAction Command="{Binding Path=Selected}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
<Path.Data>
<RectangleGeometry Rect="{Binding Path=Lines}"/>
</Path.Data>
</VirtualizingStackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
除了不触发任何MouseDown事件之外,所有绑定都在工作
//ViewModel
Public RelayCommand Selected {get;private set;}
void ExecuteSelected(object parameter)
{
// my logic
}
Public myViewModel()
{
Selected = new RelayCommand(ExecuteSelected);
}
答案 0 :(得分:1)
这里的问题是该项的datacontext不是您的主视图模型(放置Selected
命令的地方)
你应该改变你的绑定:
<i:InvokeCommandAction Command="{Binding Path=DataContext.Selected, ElementName=CSListItem}"/>