wpf textbox.selectall ()이 작동하지 않습니다
-
06-07-2019 - |
문제
내 프로젝트에서 다음 템플릿을 사용했습니다.
<DataTemplate
x:Key="textBoxDataTemplate">
<TextBox
Name="textBox"
ToolTip="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors)[0].ErrorContent}"
Tag="{Binding}"
PreviewKeyDown="cellValueTextBoxKeyDown">
<TextBox.Text>
<MultiBinding
Converter="{StaticResource intToStringMultiConverter}">
<Binding
Path="CellValue"
Mode="TwoWay">
<Binding.ValidationRules>
<y:MatrixCellValueRule
MaxValue="200" />
</Binding.ValidationRules>
</Binding>
<Binding
RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type y:MatrixGrid}}"
Path="Tag"
Mode="OneWay" />
</MultiBinding>
</TextBox.Text>
</TextBox>
</DataTemplate>
이 템플릿을 사용하여 사용자를위한 편집 가능한 행렬을 만듭니다. 사용자는 매트릭스 내에서 셀에서 셀로 탐색 할 수 있으며 선택한 텍스트 상자의 데이터를 강조하고 싶지만 작동하지 않습니다. 효과를 달성하기 위해 TextBox.Focus () 및 TextBox.Selectall ()을 호출했습니다. Focus ()는 작동하지만 텍스트는 결코 강조되지 않습니다.
모든 도움을 환영하고 감사합니다.
해결책
좋아, 누군가 관심이 있다면,이 문제에 대한 해결책은 진술을 포함시키는 것이 었습니다. e.Handled = true;
이벤트 핸들러 방법에서 textBox.SelectAll()
그리고 textBox.Focus()
호출됩니다.
문제는 텍스트 상자에 이벤트 핸들러를 첨부했다는 것입니다. PreviewKeyDown
터널링 이벤트와 아마도 SelectAll()
그리고 Focus()
전화를 걸지 않고 전화가 무시됩니다 e.Handled = true;
성명.
누군가를 도울 수 있기를 바랍니다.
다른 팁
코드의 나머지 부분이 없으면 이것이 귀하에게 적합한 지 여부를 말하기는 어렵지만 DataTemplate (게시되지 않은 코드를 참조하는 부품을 제외)를 사용하여 작은 샘플을 작성했습니다.
DataTemplate의 텍스트 상자에 GotFocus 이벤트 핸들러를 추가하여 텍스트 상자의 모든 텍스트를 선택할 수있었습니다.
<TextBox
...
GotFocus="textBox_GotFocus"
...>
...
</TextBox>
그리고 코드-홀드 :
private void textBox_GotFocus(object sender, RoutedEventArgs e)
{
TextBox textBox = sender as TextBox;
if (textBox != null)
{
textBox.SelectAll();
}
}
다른 상황에서 모든 것을 선택하려고하는 경우 (상자에 초점을 맞출 때가 아니라) 알려주십시오.
매우 간단한 솔루션은 다음과 같습니다 (템플릿에 맞는 지 모르겠지만 시도해보십시오). http://social.msdn.microsoft.com/forums/en-us/wpf/thread/564b5731-af8a-49bf-b297-6d179615819f