원인

WPF 4.5에서 TextBoxText프로퍼티에 부동소수타입(double, float)을 바인딩하고, UpdateSourceTrigger=PropertyChanged로 설정된 경우, TextBox에 소수점(‘.’)을 입력하지 못한다.

public class MainViewModel : ViewModelBase
{
    private double decimalValue;
    public double DecimalValue
    {
        get => return decimalValue;
        set => Set(ref decimalValue, value);
    }
}
<TextBox Text="{Binding DecimalValue, UpdateSourceTrigger = PropertyChanged}" ... />

해결

KeepTextBoxDisplaySynchronizedWithTextProperty속성을 False로 지정하면, WPF 4.0 이전의 TextBox처럼 동작하도록 설정할 수 있다.

// App.xaml.cs
public App()
{ 
    System.Windows.FrameworkCompatibilityPreferences.KeepTextBoxDisplaySynchronizedWithTextProperty = false;
}

카테고리:

업데이트:

댓글남기기