仅当我更改值时才触发WPF TextChanged事件

时间:2018-10-22 15:03:18

标签: wpf

在我的项目中,我有几个文本框,其方法绑定到TextChanged事件:

<TextBox Grid.Column="12" Style="{StaticResource txtDataStyle1}" Width="100" TextChanged="Data_TextChanged">
    <Binding Path="ConfigObject.Edit.Default" UpdateSourceTrigger="LostFocus">
        <Binding.ValidationRules>
            <local:GenericValidationRule>
                <local:GenericValidationRule.Wrapper>
                    <local:Wrapper TipoInterno="{Binding Path=Content, Source={x:Reference txtTipo}}"/>
                </local:GenericValidationRule.Wrapper>
            </local:GenericValidationRule>
        </Binding.ValidationRules>
    </Binding>
</TextBox>

当页面加载并且使用“ ConfigObject.Edit.Default”对文本框进行赋值时,将触发Data_TextChanged事件。怎么可以省略呢? 我只会在更改其值时才“使用”该方法。有帮助吗?

1 个答案:

答案 0 :(得分:2)

您应该在source属性的setter中实现逻辑,而不是在视图中处理TextChanged事件。

如果由于某种原因而不能执行此操作,则可以在尚未加载TextBox的情况下从事件处理程序中返回:

private void Data_TextChanged(object sender, TextChangedEventArgs e)
{
    TextBox textBox = (TextBox)sender;
    if (textBox.IsLoaded)
    {
        //your code...
    }
}