我有一个简单的xaml页面,其中包含一个TextBox和一个RichTextBlock。 在RichTextBlock里面有一些InlineUIContainers。
但是当用户按下按钮时,我会通过代码删除InlineUIContainer。这很顺利,但每次完成后,页面上的TextBox都会成为焦点! 导致触摸键盘弹出。有人知道为什么会这样吗?或者我怎么能阻止这个? 我无法设置IsTabStop,因为如果需要,用户仍然必须能够填写内容。
我正在使用WinRT Universal应用程序的Windows Phone部分
某些代码,但实际的删除是在附加的依赖项属性中完成的 它是在每次删除后获得焦点的关键字输入文本框
<TextBox x:Uid="Search_KeywordsInput" x:Name="SearchKeywordsInput"
Text="{Binding KeywordsInput, Mode=TwoWay}" />
<RichTextBlock Grid.Row="4"
Margin="0,9.5,0,0"
IsTextSelectionEnabled="False"
dependencyProperties:RichTextBlockTagCloud.Command="{Binding SelectedTagFilterCommand}"
dependencyProperties:RichTextBlockTagCloud.TagItems="{Binding SelectedFilters, Mode=TwoWay}">
<Paragraph x:Name="TagsFilters" />
foreach (InlineUIContainer container in buttonsToRemove)
tagParagraph.Inlines.Remove(container);
答案 0 :(得分:2)
您是否尝试在IsTabStop=False
上设置Button
,因此点击按钮不会抢占RichTextBox
焦点。
答案 1 :(得分:0)
如果移除聚焦控件,则焦点将移至有效控件。在这种情况下,找到的下一个控件是TextBox。如果您在移除聚焦按钮之前将焦点停留在良性(非文本)控件上,则键盘将不会触发。
根据您的整体布局,您可以将焦点设置到页面,您可以使用另一个有意义的按钮,或者您可以向Tab键顺序添加不可编辑的控件。