【问题标题】:How to prevent deselection in a WPF DataGrid?如何防止 WPF DataGrid 中的取消选择?
【发布时间】:2012-03-01 16:57:46
【问题描述】:

我希望在任何给定时刻在 DataGrid 中选择某些行。我不希望它允许取消选择。如何实现?

【问题讨论】:

    标签: c# .net wpf datagrid selection


    【解决方案1】:

    XAML

    <DataGrid SelectionMode="Single" SelectionChanged="DataGrid_SelectionChanged">
        ...           
    </DataGrid>
    

    C#

    private void DataGrid_SelectionChanged(
        object sender,
        SelectionChangedEventArgs e)
    {
        DataGrid g = sender as DataGrid;
        if (g != null &&
            e.AddedItems.Count == 0 &&
            e.RemovedItems.Count > 0)
        {
            this.Dispatcher.BeginInvoke((ThreadStart)delegate
            {
                g.SelectedItem = (Device)e.RemovedItems[0];
            });
        }
    }
    

    【讨论】:

    • 我没有尝试使用e.AddedItems.Count == 0,但是当我使用e.RemovedItems.Count &gt; 0 时,它会产生无限循环和 StackOverflowException
    • 我希望因为设置 SelectedItem 会触发选择更改事件,并且在不确保还没有选择(即e.AddedItems.Count == 0)的情况下,分配将无限期地触发处理程序。
    • 添加e.AddedItems.Count == 0 时会发生什么?有用吗?
    • 它适用于 e.AddedItems.Count == 0this.Dispatcher.BeginInvoke
    猜你喜欢
    • 2011-02-15
    • 2011-04-07
    • 2012-03-12
    • 2013-04-19
    • 2011-10-14
    • 1970-01-01
    • 2020-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多