小编ncf*_*ion的帖子

WPF DataGrid - 如何自动退出编辑模式?

我已经从Codeplex 实现了WPF DataGrid 单击编辑.在该解决方案中,单击单元格并选择行以实现DataGrid的单击编辑.它运作得很好.

这是代码:

private void DataGridCell_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        DataGridCell cell = sender as DataGridCell;
        if (cell != null && !cell.IsEditing && !cell.IsReadOnly)
        {
            if (!cell.IsFocused)
            {
                cell.Focus();
            }
            DataGrid dataGrid = FindVisualParent<DataGrid>(cell);
            if (dataGrid != null)
            {
                if (dataGrid.SelectionUnit != DataGridSelectionUnit.FullRow)
                {
                    if (!cell.IsSelected)
                        cell.IsSelected = true;
                }
                else
                {
                    DataGridRow row = FindVisualParent<DataGridRow>(cell);
                    if (row != null && !row.IsSelected)
                    {
                        row.IsSelected = true;
                    }
                }
            }
        }
    }    
Run Code Online (Sandbox Code Playgroud)

但我还希望我的DataGrid在更改单元格值时自动退出编辑模式(不按Enter键).例如,在编辑模式下,我在单元格中有一个组合框.当用户在组合框中选择一个值时,它将自动对所选值进行数据绑定.但是,用户仍然需要单击Enter以退出编辑模式.如何自动退出编辑模式?

我已经尝试侦听属性更改并调用DataGrid的CommitEdit函数以自动退出编辑模式.效果很好,这里是代码:

 void _gameCompareViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs …
Run Code Online (Sandbox Code Playgroud)

wpf datagrid c#-4.0

12
推荐指数
1
解决办法
2万
查看次数

订阅Singleton类发布的事件

我有一个名为CacheState的Singleton类.这个类发布了很多事件.CacheState有一个System.Timers.Timer,它循环并触发所有这些事件.

然后在我的asp.net应用程序中,我在Application_Start期间订阅了这些事件.CacheState中的Timer也在此期间启动:

protected void Application_Start(object sender, EventArgs e)
        {           
                CacheState.Instance.ProductChangedEvent += (objSender, argsE) => ProductService.ReloadProductCache(false);
                CacheState.Instance.PageflexChangedEvent += (objSender, argsE) => ProductService.ResetPageflexCache(false);
                CacheState.Instance.DeliveryChangedEvent += (objSender, argsE) => PricingRuleService.ResetDeliveryMethodsCache(false);
                CacheState.Instance.UIItemChangedEvent += (objSender, argsE) => TemplateService.ResetUIItemsCache(false);
                CacheState.Instance.ProductAttributeChangedEvent += Instance_ProductAttributeChangedEvent;
                CacheState.Instance.Start();

        }
Run Code Online (Sandbox Code Playgroud)

我读过C#Events会导致内存泄漏.那么,任何人都可以告诉我,如果我这样做错了吗?

谢谢.

c# asp.net

0
推荐指数
1
解决办法
1550
查看次数

标签 统计

asp.net ×1

c# ×1

c#-4.0 ×1

datagrid ×1

wpf ×1