9

ユーザーの操作/選択のみのためにWPF DataGrid要素でSelectionChangedイベントを処理し、バインディングまたはその他の設定値が原因である場合はスキップしたいと思います。Selection がユーザーの操作によって変更されたかどうかを判断する方法はありますか? または、同様のタスクを実行する代替イベントはありますか?

4

3 に答える 3

15

SelectionChangedイベントとイベントを組み合わせてみてくださいPreviewMouseDown。ユーザーが行をクリックすると、いくつかのプロパティが設定され、 SelectionChangedイベント ハンドラでプロパティが変更されたかどうかがチェックされます。

サンプル コード XAML:

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

コードビハインド:

bool isUserInteraction;

private void OnSelectionChanged(object sender, SelectionChangedEventArgs e)
{
    if (isUserInteraction)
    {
        //some code

        isUserInteraction = false;
    }
}

private void OnPreviewMouseDown(object sender, MouseButtonEventArgs e)
{
    isUserInteraction = true;
}
于 2013-01-13T09:06:20.930 に答える
2

こんにちは、これを xaml で使用できます。

 <ComboBox x:Name="ComboBoxName" SelectionChanged="ComboBox_SelectionChanged">
                                        <ComboBox.Style>
                                            <Style TargetType="ComboBox">
                                                <Style.Triggers>                                                       
                                                    <Trigger Property="IsDropDownOpen" Value="True">
                                                        <Setter Property="IsEditable" Value="True"></Setter>
                                                    </Trigger>
                                                </Style.Triggers>
                                            </Style>
                                        </ComboBox.Style>
                                    </ComboBox>

およびコードビハインドで:

private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        if (!((ComboBox)sender).IsEditable) return;
        //Do Stuff;
    }
于 2017-11-02T09:24:09.633 に答える