3
키보드 포커스를 스택 패널에 포함 된 텍스트 상자로 설정하려고합니다. IsEditMode가 true가되면 텍스트 상자에 기본적으로 초점을 맞추기를 원합니다.FocusManager.FocusedElement를 사용한 포커스 텍스트 상자
나는이 코드를 시도했다 :
<DataTemplate x:Key="LibraryItemTemplate">
<StackPanel Orientation="Vertical">
<StackPanel.Style>
<Style TargetType="StackPanel">
<Style.Triggers>
<DataTrigger Binding="{Binding IsEditMode}" Value="True">
<Setter Property="FocusManager.FocusedElement" Value="{Binding ElementName=TxtB}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</StackPanel.Style>
<TextBlock x:Name="TxtA" Text="A" />
<TextBox x:Name="TxtB" Text="B" Visibility="{Binding IsEditMode, Converter={StaticResource BoolVisibilityCollapsed}}"/>
</StackPanel>
</DataTemplate>
....
<ListView x:Name="LibraryListView" SelectedItem="{Binding SelectedItem, UpdateSourceTrigger=PropertyChanged}" >
<ListView.View>
<GridView>
<GridViewColumn CellTemplate="{StaticResource LibraryItemTemplate}" Width="Auto"/>
</GridView>
</ListView.View>
을 그러나 문제는 마우스입니다 표시하지 않는 키보드 포커스가없는 텍스트 상자에 보인다 나는 다시 한 번을 마우스로 클릭해야 TextBox에서 TextBox를 입력 할 수있는 TextBox.
아이디어가 있으십니까?
TxtB가 항상 보이면이 문제가 계속 발생합니까? (지금은 visbility 바인딩을 제거하십시오.) TxtB가 포커스를 맞추려고 할 때 아직 보이지 않는지 궁금합니다. 또한이 SO 게시물을 보셨나요? http://stackoverflow.com/questions/3109080/focus-on-textbox-when-usercontrol-change-visibility – Darlene
Ok 가시성을 제거하고 작동하지만 여전히 어떻게 든 숨기고 IsEditMode가 false 인 경우 TextBlock을 표시해야합니다. 반대. 그렇다면이 기능을 구현하는 방법은 무엇입니까? – artos
이 StackOverflow 게시물을 살펴보면 텍스트 상자가 표시 될 때 초점을 맞추는 방법에 대해 설명합니다. http://stackoverflow.com/questions/3109080/focus-on-textbox-when-usercontrol-change-visibility – Darlene