の拡張選択に問題がありListBox
ます。10 個のアイテムがあり、ボタンListBox
を使用して最初の 5 個を選択しているとします。Shift
イベントは 5 つのSelectionChanged
アイテムで発生します。Shift
その後、ボタンを押したまま5つのアイテムから3つのアイテムを選択したいのですが、SelectionChanged
イベントは発生しません。以前に選択した 5 つのアイテムのうち 3 つを選択しているときに、2 番目に選択したアイテムにどのように反応できますか?
質問する
1314 次
1 に答える
0
xamlコードも表示できますか?あなたのバインディングがどのように見えるかを知りたいのですが、あなたのコードを見ない限り、私は確信が持てません..
コマンドバインディングでは、相対ソースバインディングを持つバインディングを使用しました...
バインディングでこれらの変更を行うことを検討してください
1) Ancestortype としてリスト ボックスを使用する
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 に答える