wpfuser-interactionselectionchanged

could the SelectionChanged event in WPF be handled only for user interaction?


I would like to handled SelectionChanged event in WPF DataGrid element for user interaction/selection only and skip if it's due to binding or other set values. Any idea how I will determine if the Selection is changed by user interaction? Or any alternate event that would do similar task?


Solution

  • Maybe try combine SelectionChanged event with PreviewMouseDown event. When user click a row you set some property and in SelectionChanged event handler check if than property was changed.

    Sample code XAML:

    <DataGrid SelectionChanged="OnSelectionChanged" PreviewMouseDown="OnPreviewMouseDown">
            <!--some code-->          
    </DataGrid>
    

    Code behind:

    bool isUserInteraction;
    
    private void OnSelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        if (isUserInteraction)
        {
            //some code
    
            isUserInteraction = false;
        }
    }
    
    private void OnPreviewMouseDown(object sender, MouseButtonEventArgs e)
    {
        isUserInteraction = true;
    }