gpt4 book ai didi

c# - 具有延迟和键绑定(bind)的 XAML 绑定(bind)

转载 作者:行者123 更新时间:2023-12-05 03:31:47 25 4
gpt4 key购买 nike

我的 XAML 代码非常有用:

<TextBox Text="{Binding MyTextProperty, UpdateSourceTrigger=PropertyChanged}">
<TextBox.InputBindings>
<KeyBinding Command="{Binding MyOwnCommand}" CommandParameter="{Binding MyTextProperty}" Key="Enter" />
</TextBox.InputBindings>
</TextBox>

我有 MyTextProperty,当我按回车键时,它作为参数传递给 MyOwnCommand

我不希望 MyTextProperty 在我每次输入字母时更新(因为它有一些相关的逻辑),但我确实希望它在我完成输入后执行(不按回车键或失去焦点).理想的解决方案是这样的:

<TextBox Text="{Binding MyTextProperty, UpdateSourceTrigger=PropertyChanged, Delay=400}">
<TextBox.InputBindings>
<KeyBinding Command="{Binding MyOwnCommand}" CommandParameter="{Binding MyTextProperty}" Key="Enter" />
</TextBox.InputBindings>
</TextBox>

这里的重点是“Delay=400”参数。它会等到我完成输入,然后更新 MyTextProperty

但此时我发现的问题是,如果我键入内容并立即按回车键,MyOwnCommand 会被调用,但 MyTextProperty 尚未更新(它将被更新400 毫秒后)。

我尝试在 CommandParameter="{Binding MyTextProperty, Delay=400}" 中添加相同的延迟,但它不起作用。

MyTextProperty 更新后传递 CommandParameter 的正确方法是什么?

最佳答案

TextBox.Text 在用户从键盘键入符号后立即更改,即使将值发送到绑定(bind)属性有延迟也是如此。因此,您可以直接将 CommandParameter 绑定(bind)到 TextBox.Text:

<TextBox Name="MyTextBox" 
Text="{Binding MyTextProperty, UpdateSourceTrigger=PropertyChanged, Delay=400}">
<TextBox.InputBindings>
<KeyBinding Command="{Binding MyOwnCommand}"
CommandParameter="{Binding Text, ElementName=MyTextBox}"
Key="Enter" />
</TextBox.InputBindings>
</TextBox>

关于c# - 具有延迟和键绑定(bind)的 XAML 绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70592040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com