wpf中处理 gridcontrol 虚拟化造成的事件触发

wpf中处理 gridcontrol 虚拟化造成的事件触发

在wpf中,gridcontrol控件默认会启用虚拟化。我们不能禁用 GridControl 的虚拟化机制。因此在数据量变多,需要移动滚动条时,就会触发事件。

例如:

<dxg:GridColumn Header="描述">
                        <dxg:GridColumn.CellTemplate>
                            <DataTemplate>
                                <dxe:TextEdit EditValueChanged="TextEdit_EditValueChanged" Text="{Binding Data.Description, Mode=TwoWay}" />
                            </DataTemplate>
                        </dxg:GridColumn.CellTemplate>
                    </dxg:GridColumn>

在滚动条滚动时,总是会触发EditValueChanged,这不是我希望的结果。

解决办法:

在事件处理的时候,判断控件是否获得焦点,只有在获取焦点的时候才去触发事假中的方法。control.IsKeyboardFocusWithin是关键。

 private void CmbTextChangedAction(EditValueChangedEventArgs e)
{

    TextEdit tbName = (TextEdit)e.OriginalSource;
    if (tbName.IsKeyboardFocusWithin)
    {
        string tbNameString = tbName.Text;
        Regex regex = new Regex(RegexHelper.CheckNamePattern) 
    }    
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值