2012-03-28 2 views
0

double (아래 참조) 창의 종속성 속성에 바인딩 된 WPF 창에 TextBox이 있습니다. 유저가 TextBox의 유형CurrencyFormat 및 PropertyChanged 트리거가있는 텍스트 상자에서 텍스트를 올바르게 허용하지 않습니다.

  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 특성을 제거하면 올바르게 입력되지만 통화 형식은 유지되지 않습니다.

아이디어가 있으십니까?

+0

사용을 변환기를 편집하지 않을 때 서식 적용 TextBox 스타일. TextBox는 실제로 텍스트 만 처리하므로 텍스트가 아닌 다른 텍스트에 바인딩하면 일부 가정 (추측)을 가져야합니다. http://stackoverflow.com/questions/9050054/cannot-assign-a-null-value-to-a-nullable-int32-via-binding – Paparazzi

답변

5

이것은 문자를 누를 때마다 서식을 적용하려고했기 때문에 발생합니다.

대안으로, 나는 보통 너무 단지가

<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> 
+0

그건 내 질문의 끝에서 내가 그 말을 할 때, 업데이트 트리거가 형식을 유지 관리하지 않습니다. 나는 회계 응용 프로그램을 만들고 있는데, 가능한 경우 서식을 유지하고 싶습니다. – gregsdennis

+0

@gregsdennis이 스타일은 통화 형식을 유지하지만 사용자가 'TextBox'에 집중하지 않는 경우에만 유지됩니다. 사용자가'TextBox'를 클릭하면 서식을 없애고 번호를 보여줍니다. 'TextBox'를 타이핑하면 모든 키 스트로크에서 여전히 'PropertyChanged' 이벤트가 발생하지만 입력하는 동안 숫자를 포맷하지 않습니다. – Rachel

+0

나는 그것을 얻는다. 사용자가 상자에 입력하는 동안 형식을 유지하고 싶습니다. – gregsdennis

관련 문제