c# - TextBox onchange 事件在 WPF 中使用占位符触发两次

标签 c# wpf mvvm caliburn.micro

我使用下面的链接向文本框添加了一个占位符,

http://www.techken.in/coding/c-wpf-create-textbox-placeholder-using-xaml-code/

下面是我使用的文本框语法,

<TextBox   Style="{StaticResource placeHolder}"  Tag="Input text" Text="
{Binding Path=Token,Mode=OneWayToSource, 
UpdateSourceTrigger=PropertyChanged}"  cal:Message.Attach="[Event 
TextChanged] = [Action OnChangeEvent()]"  />

当保留 placeHolder 时,事件会触发两次。如果我删除位于 placeHolder xaml 中的 Textbox 的 UpdateSourceTrigger,我将无法获得更改后的属性值。任何人都请告诉我如何使它仅使用占位符点击一次 OnChangeEvent。

最佳答案

尝试获取属性 setter 中的值,这样属性就不会被设置两次,从而导致 OnChangeEvent 触发两次。试试下面的方法

如果(值==_token)返回;

public string Token
{
    get => _token;
    set
    {
        if (value == _token)
        { 
            return;
        }
        _token = value;
        OnPropertyChanged();
    }
}

关于c# - TextBox onchange 事件在 WPF 中使用占位符触发两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49385937/

相关文章:

c# - Microsoft ServiceBus 无序接收 BrokeredMessages

c# - C#中有 "try to lock, skip if timed out"操作吗?

WPF (XBAP) 应用程序在某些机器上不受信任,但其他机器会收到提示并可以运行该应用程序

c# - 如何将数据从主窗口传递到主窗口内的用户控件?

wpf - 有没有人有在 MVVM 模式下工作的 WPF Datagrid 的代码示例?

wpf - MVVM Tabcontrol 更改选项卡

c# - Entity Framework 连接字符串定义

c# - C#反序列化在InvalidOperationException上捕获并继续。怎么样?

c# - 为什么 WPF 中没有点击事件?

wpf - MVVM WPF ComboBox SelectedItem 绑定(bind)未在数据网格内激活