ListBox
中的扩展选择存在问题。假设我有一个ListBox
有10个项目,我正在使用Shift
按钮选择前5个项目。使用5个项目触发SelectionChanged
事件。之后我想从那些5中选择3个项目,再次按下Shift
按钮,但SelectionChanged
事件未被触发。当我选择之前选择的5个中的3个时,我如何对第二个选项做出反应?
答案 0 :(得分:0)
你能展示xaml代码我想看看你的绑定是什么样的 它应该看起来像这样..但我不能确定,除非我看到你的代码
在Command绑定中,您使用了具有相对源绑定的绑定...
考虑在绑定中进行这些更改
1)使用列表框作为Ancestortype
2)绑定时使用Path = DataContext.SelectionChangedCommand,否则它将把列表框作为datacontext。
<catel:EventToCommand Command="{Binding Path=DataContext.SelectionChangedCommand, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBox}}}" DisableAssociatedObjectOnCannotExecute="False" PassEventArgsToCommand="True" />
这里是一个示例,说明了ListBoxItem Template
的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>