我在ListBox
. 假设我有ListBox
10 个项目,我使用Shift
按钮选择前 5 个项目。该SelectionChanged
事件由 5 个项目触发。之后,我想从这 5 个项目中选择 3 个项目,再次Shift
按下按钮,但SelectionChanged
不会触发事件。当我选择之前选择的 5 个项目中的 3 个时,我如何对第二个项目做出反应?
问问题
1314 次
1 回答
0
你能也显示xaml代码吗?我想看看你的绑定是什么样子的
在命令绑定中,您使用了具有相对源绑定的绑定...
考虑在绑定中进行这些更改
1) 使用列表框作为祖先类型
2) 绑定时使用 Path=DataContext.SelectionChangedCommand 否则它将列表框作为数据上下文。
<catel:EventToCommand Command="{Binding Path=DataContext.SelectionChangedCommand, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBox}}}" DisableAssociatedObjectOnCannotExecute="False" PassEventArgsToCommand="True" />
这是 ListBoxItem 模板的 XAML 外观示例
<Grid>
<StackPanel Orientation="Horizontal">
<Label Width="180">Field1</Label>
<ListBox Height="200"
IsSynchronizedWithCurrentItem="True"
ItemsSource="{Binding List1, Mode=OneWay}"
Name="listBox1"
SelectionMode="Single"
Width="300">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Width="290">
<TextBlock Width="90" Text="{Binding}"></TextBlock>
<ComboBox Width="180" ItemsSource="{Binding DataContext.List2, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}" DisplayMemberPath="Field1">
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<catel:EventToCommand Command="{Binding Path=DataContext.SelectionChangedCommand, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBox}}}" DisableAssociatedObjectOnCannotExecute="False" PassEventArgsToCommand="True" />
</i:EventTrigger>
</i:Interaction.Triggers>
</ComboBox>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</StackPanel>
于 2012-11-26T23:08:53.863 回答