code

텍스트 상자를 부동값으로 바인딩합니다.도트/콤마를 입력할 수 없습니다.

starcafe 2023. 5. 8. 22:22
반응형

텍스트 상자를 부동값으로 바인딩합니다.도트/콤마를 입력할 수 없습니다.

예를 들어 텍스트 상자에 DOT 또는 COMA를 입력하려고 할 때1.02또는83,33텍스트 상자에서 이러한 값을 입력할 수 없습니다(입력이 빨간색으로 바뀝니다).텍스트 상자가 부동 속성에 바인딩되어 있습니다. 왜죠?

텍스트 상자를 부동 속성에 바인딩했습니다.Power을 시행하는 학급의.INotifyPropertyChanged.

private float _power;

public float Power
{
    get { return _power; }
    set
    {
        _power = value;
        OnPropertyChanged("Power");
    }
}

참말에서

<TextBox Name="txtPower" Height="23" TextWrapping="Wrap" Text="{Binding Path=Power, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"></TextBox>

저는 지금 커스텀 유효성 검사가 전혀 없습니다.

십진법도 시도해봤지만 역시 작동하지 않습니다.끈에 대해서는 모든 것이 잘 작동합니다.

만약에.NET 4.5 이상, 4.5 이전 동작을 적용할 수 있습니다.

System.Windows.FrameworkCompatibilityPreferences.KeepTextBoxDisplaySynchronizedWithTextProperty = false;

Sebastian Lux의 블로그 보기:.NET 4.5에서는 더 이상 구분 문자(쉼표 또는 점)를 입력할 수 없습니다.UpdateSourceTrigger = PropertyChanged결석으로마이크로소프트는 이를 의도했다고 말합니다.

바인딩에 StringFormat 정의를 추가해 보십시오.이와 같은 경우:

<TextBox Name="txtPower" Height="23" 
    TextWrapping="Wrap" Text="{Binding Path=Power, Mode=TwoWay, 
    UpdateSourceTrigger=PropertyChanged,StringFormat=N2}"></TextBox>

텍스트 상자의 점 및 쉼표 문제를 소수점 또는 부동 소수점으로 고정

1-  UpdateSourceTrigger = LostFocus 
2-  add string format StringFormat={}{0:#.##} to escape unneeded zeros 


<TextBox Name="txtPower" Height="23" 
         TextWrapping="Wrap" Text="{Binding Path=Power, Mode=TwoWay, 
         UpdateSourceTrigger=LostFocus ,StringFormat={}{0:#.##}}"></TextBox>

언급URL : https://stackoverflow.com/questions/14600842/bind-textbox-to-float-value-unable-to-input-dot-comma

반응형