컨트롤을 처음로드 할 때 TextBox의 모든 텍스트를 선택하는 가장 좋은 방법을 찾으려고합니다. MVVM 패턴을 사용하고 있으므로 TextBox의 Text 속성에 대한 양방향 바인딩을 내 ViewModel의 문자열에 사용하고 있습니다. 이 TextBox를 사용하여 이미 이름이있는 이름을 "이름을 바꿉니다". 컨트롤이로드 될 때 이전 이름을 선택하여 쉽게 삭제하고 이름을 바꿀 수 있습니다. 초기 텍스트 (이전 이름)는 내 ViewModel에서 설정하여 채워지며 데이터 바인딩이 완료된 후 TextBox에 반영됩니다.Silverlight TextBox에서 초기 텍스트 선택
내가 것 정말이 할 좋아하는이 같은 것입니다 :
<TextBox x:Name="NameTextBox" Text="{Binding NameViewModelProperty, Mode=TwoWay}" SelectedText="{Binding NameViewModelProperty, Mode=OneTime}" />
은 기본적으로 그냥 일회용 바인딩과 SelectedText으로 전체 텍스트를 사용합니다. 그러나 SelectedText는 DependencyProperty가 아니기 때문에 작동하지 않습니다.
내보기의 코드 숨김에 선택 코드를 추가하는 것과 완전히 다르지는 않지만이 경우 내 문제는 초기 텍스트 바인딩이 완료된 시점을 결정하는 것입니다. TextBox는 항상 빈 상태로 시작되므로 생성자에서 수행 할 수 없습니다. TextChanged 이벤트는 사용자가 새 텍스트를 입력 할 때만 발생하며 ViewModel의 초기 바인딩에서 텍스트가 변경된 경우에는 발생하지 않습니다.
모든 아이디어를 매우 높이 평가합니다.
내가 정말이 서브 클래 싱은 필요하다고 생각하지 않지만 SelectAll() TextBox의 GotFocus 이벤트를 호출하면 데이터 바인딩 된 텍스트조차도 원하는 것을 얻을 않았다. 하위 클래스가 될 실제 이유가 없습니다. 코드 비하인드에서이 작업을 수행했으며 더 많은 MVVMish를 얻고 싶다면 쉽게 블렌드 동작으로 리팩토링 할 수 있습니다. 감사! –