2012-10-04 3 views
0

Silverlight 응용 프로그램의 텍스트 상자에 double 유형의 속성을 바인딩하고 텍스트 상자의 값을 변경하는 응용 프로그램을 실행하는 동안 커서가 사용자가 값을 입력 할 수 없도록 처음으로 이동합니다. .커서 재설정 관련 쿼리

예 : 사용자가 99999.9를 입력하려고하는 경우 99999 값 뒤에 "."을 입력하려고합니다. 커서가 첫 번째 위치로 이동하여 사용자가 입력 할 수 없게 됨 99999.9

이 문제는 UpdateSourceTrigger = PropertyChanged를 텍스트 바인딩 속성에 추가 할 때 발생합니다. 이 속성을 제거하면 텍스트 상자가 정상적으로 작동합니다.

이 문제를 해결할 수 있도록 도와주세요.

감사

XAML : textlength에의 TextChanged 이벤트를 사용하고 설정 지정한 selectionStart의 속성하십시오

<TextBox x:Name="txtUtil" IsReadOnly="{Binding IsReadable,Mode=TwoWay}" Text="{Binding Utilization,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, NotifyOnValidationError=True,ValidatesOnExceptions=True}" Width="70" Height="30"/> 

C#을

public double Utilization { 
    get { return utilization; } 
    set { utilization = value; 
     OnPropertyChanged("Utilization"); 
    } 
} 
+0

이는'하는 DependencyProperty를 사용하여 고정 될 수 있습니다 '대신? –

+0

'PropertyChanged' 이벤트를 발생시키는 것 이외의'OnPropertyChanged' 메소드에서 어떤 일이 발생합니까? 제공된 코드를 사용하여 설명한 동작을 재현 할 수 없었습니다. –

+0

이 문제는 서버에서 응용 프로그램을 호스팅하고 로컬에서 링크를 탐색 할 때 발생했습니다. – Everest

답변

0

+0

나는 txtUtil.SelectionStart = txtUtil.Text.Length를 사용했다. 이것은 커서 위치를 재설정하지 않습니다. 하지만이 같은 다른 문제를 유도 ... 내가 소수점 입력 허용하지 "." 내가 maxlength의 수를 입력 할 때까지. 예를 들어, 텍스트 상자의 최대 길이가 10이면 모든 10 자리를 입력 할 때까지는 소수점을 입력 할 수 없습니다. – Everest

+0

숫자의 길이가 10보다 큰 경우 maxlength를 사용하는 이유는 무엇입니까? – CognitiveDesire

+0

우리는 컨트롤이 받아 들여야한다는 요구 사항을 가지고 있습니다 단지 10 자리와 소수 2 자리 – Everest