WPF中带有占位符的文本框onchange事件触发两次

3
我使用以下链接为文本框添加了占位符: 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并保留placeholder?


无法重现这种行为。我认为这与您正在使用的 Calibrum Micro 有关。 - XAMlMAX
1个回答

2
尝试在属性设置器中获取值,这样属性就不会被设置两次,从而导致OnChangeEvent触发两次。尝试以下方法: 如果 (value == _token) 返回;
public string Token
{
    get => _token;
    set
    {
        if (value == _token)
        { 
            return;
        }
        _token = value;
        OnPropertyChanged();
    }
}

通过这种方式,我们无法使用“cal: Message.Attach =”[Event TextChanged]“事件,其中有许多选项可传递这些参数(//$eventArgs,$dataContext,$source,$view,$executionContext,$this)。但目前这对我有效。 - Mahesh
如果将门控变更导致无法连接到消息,则可以考虑删除门控并尝试使用UpdateSourceTrigger进行调整。将触发器更改为显式,并尝试在那里进行门控值的更改。 - robaudas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接