【发布时间】:2013-07-31 20:22:49
【问题描述】:
我正在尝试将键盘焦点设置到堆栈面板中包含的文本框。当 IsEditMode 变为 true 时,我希望文本框默认成为焦点。
我试过这段代码:
<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 中输入一些文本。
有什么想法吗?
【问题讨论】:
-
如果 TxtB 始终可见,您是否还有此问题? (现在删除可见性绑定。)我想知道当你试图集中它时 TxtB 是否还不可见。你也看过这个SO帖子吗? stackoverflow.com/questions/3109080/…
-
好的,我删除了可见性并且它可以工作,但我仍然需要以某种方式隐藏它并在 IsEditMode 为 false 时显示 TextBlock,反之亦然。那么如何实现这个功能呢?
-
查看这篇 StackOverflow 帖子,该帖子讨论了在文本框可见时对其进行聚焦。 stackoverflow.com/questions/3109080/…
-
我也试过了,它也可以,所以我们有两种方法来实现它,非常感谢
-
如果这个问题解决了,添加一个答案怎么样?
标签: wpf textbox focusmanager