gpt4 book ai didi

wpf - 带有 CurrencyFormat 和 PropertyChanged 触发器的 TextBox 不接受正确的文本

转载 作者:行者123 更新时间:2023-12-01 22:42:36 25 4
gpt4 key购买 nike

我在 WPF 窗口中有一个 TextBox 绑定(bind)到类型为 double 的窗口的依赖属性(见下文)。每当用户在 TextBox 中键入

  1. TextBox 为空,或者
  2. 选中所有文本,

输入的文本被错误接受。例如:如果我在上述任一情况下键入“5”,结果文本为“$5.00”,但脱字符号位于“5”之前、“$”之后。如果我尝试输入“52.1”,我会得到“$2.15.00”。

<Window x:Class="WPF.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="154" Width="240" Name="ThisWindow"
Background="{StaticResource {x:Static SystemColors.AppWorkspaceBrushKey}}">
<Grid>
<TextBox Text="{Binding ElementName=ThisWindow,
Path=Amount,
StringFormat={}{0:c},
UpdateSourceTrigger=PropertyChanged}"
VerticalAlignment="Center"
HorizontalAlignment="Center"
MinWidth="100" />
</Grid>
</Window>

如果我删除 UpdateSourceTrigger 属性,它会正确键入,但不会保留货币格式。

有什么想法吗?

最佳答案

这是由于它在每次按下字符后尝试应用格式造成的。

作为替代方案,我通常只设置 TextBox 的样式,以便它仅在未被编辑时应用格式

<Style TargetType="{x:Type TextBox}">
<Setter Property="Text" Value="{Binding SomeValue, StringFormat=C}" />
<Style.Triggers>
<Trigger Property="IsKeyboardFocusWithin" Value="True">
<Setter Property="Text" Value="{Binding SomeValue, UpdateSourceTrigger=PropertyChanged}" />
</Trigger>
</Style.Triggers>
</Style>

关于wpf - 带有 CurrencyFormat 和 PropertyChanged 触发器的 TextBox 不接受正确的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9910681/

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