C# 在DragDrop WPF期间防止SelectionChanged事件

C# 在DragDrop WPF期间防止SelectionChanged事件,c#,wpf,xaml,mvvm,telerik,C#,Wpf,Xaml,Mvvm,Telerik,我正在使用Telerik控件使用MVVM模式开发WPF应用程序 功能: <telerik:RadListBox x:Name="lstMarketSeries" ItemsSource="{Binding MarketSeriesCollection, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, NotifyOnSourceUpdated=True, ValidatesOnDataErrors=True}" ItemContainer

我正在使用
Telerik
控件使用
MVVM
模式开发
WPF
应用程序

功能:

<telerik:RadListBox x:Name="lstMarketSeries" ItemsSource="{Binding MarketSeriesCollection, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, NotifyOnSourceUpdated=True, ValidatesOnDataErrors=True}" ItemContainerStyle="{StaticResource DraggableListBoxItem}" DragLeave="lstMarketSeries_DragLeave" SelectionMode="Extended"  telerik:StyleManager.Theme="Windows8" SelectionChanged="MarketSeriesCommit_SelectionChanged">
</telerik:RadListBox>
private void MarketSeriesCommit_SelectionChanged(object sender, SelectionChangedEventArgs e)
 {

 }

private void lstMarketSeries_DragLeave(object sender, DragEventArgs e)
 {        

 }
我使用的是
telerik:RadListBox
,在运行时为其绑定一个集合。我可以对RadListBox中的项目重新排序

问题:

<telerik:RadListBox x:Name="lstMarketSeries" ItemsSource="{Binding MarketSeriesCollection, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, NotifyOnSourceUpdated=True, ValidatesOnDataErrors=True}" ItemContainerStyle="{StaticResource DraggableListBoxItem}" DragLeave="lstMarketSeries_DragLeave" SelectionMode="Extended"  telerik:StyleManager.Theme="Windows8" SelectionChanged="MarketSeriesCommit_SelectionChanged">
</telerik:RadListBox>
private void MarketSeriesCommit_SelectionChanged(object sender, SelectionChangedEventArgs e)
 {

 }

private void lstMarketSeries_DragLeave(object sender, DragEventArgs e)
 {        

 }
当我在
DragLeave
事件之后拖动
RadListBox
中的
items时,将触发
SelectionChanged
事件

XAML:

<telerik:RadListBox x:Name="lstMarketSeries" ItemsSource="{Binding MarketSeriesCollection, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, NotifyOnSourceUpdated=True, ValidatesOnDataErrors=True}" ItemContainerStyle="{StaticResource DraggableListBoxItem}" DragLeave="lstMarketSeries_DragLeave" SelectionMode="Extended"  telerik:StyleManager.Theme="Windows8" SelectionChanged="MarketSeriesCommit_SelectionChanged">
</telerik:RadListBox>
private void MarketSeriesCommit_SelectionChanged(object sender, SelectionChangedEventArgs e)
 {

 }

private void lstMarketSeries_DragLeave(object sender, DragEventArgs e)
 {        

 }

是否有任何方法可以限制SelectionChanged事件在
DragLeave
事件之后被触发?

我认为这不是防止触发选择事件的好方法。但您可以尝试添加标志IsInDrag(布尔值)并在darag/drop操作期间对此进行管理(开始拖动时为true,输入最终选择更改的处理程序时为false),此外,当您输入SelectionChanged事件处理程序且标志为true时,您将此设置为false并离开处理程序(此外,您可以将SelectionChangedEventArgs的handle属性设置为true)仅此而已


关于。

不添加处理程序怎么样?这对你有用吗?@tgpdyk:不,我需要处理程序来处理一些值。