double
(아래 참조) 창의 종속성 속성에 바인딩 된 WPF 창에 TextBox
이 있습니다. 유저가 TextBox
의 유형CurrencyFormat 및 PropertyChanged 트리거가있는 텍스트 상자에서 텍스트를 올바르게 허용하지 않습니다.
TextBox
이 비어 있거나- 의 모든 텍스트가 선택 될 때마다,
입력 된 텍스트가 잘못 허용됩니다. 예를 들어 :이 시나리오 중 하나에서 '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
스타일. TextBox는 실제로 텍스트 만 처리하므로 텍스트가 아닌 다른 텍스트에 바인딩하면 일부 가정 (추측)을 가져야합니다. http://stackoverflow.com/questions/9050054/cannot-assign-a-null-value-to-a-nullable-int32-via-binding – Paparazzi