我有一个小型用户控件,使用“浏览”按钮选择某个文件,并使用文本框显示所选文件的路径:
<TextBox Text="{Binding FilePath, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
<Button Content="Browse" cal:Message.Attach="SelectInstallationPointsFile" />
控件从窗口对话框开始,作为带有两个按钮的窗口 - OK
和Cancel
在窗口资源样式上定义(代码的简化版本):
<Style TargetType="{x:Type Window}">
...
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Window}">
...
<ContentControl Content="{TemplateBinding Content}" ContentTemplate="{TemplateBinding ContentTemplate}" /> <!-- here will be the user control -->
<Button IsDefault="True" Content="OK" cal:Message.Attach="Apply" />
<Button IsCancel="True" cal:Message.Attach="Cancel" />
...
</Style>
对话框视图(绿色部分 - 窗口,红色 - 用户控件):
接下来是问题 - 当您点击Enter
按钮时,会对来自用户控件的Browse
按钮做出反应,但不会从窗口对话框做出OK
按钮,OK
按钮有IsDefault="True"
!
答案 0 :(得分:0)
:
public partial class YourUserControl : UserControl
{
public YourUserControl()
{
InitializeComponent();
this.OkBtn.Focus();
}
}
抱歉,我的错,您可以试试:
<ControlTemplate TargetType="{x:Type Window}" FocusManager.FocusedElement="{Binding ElementName=OkBtn}">
答案 1 :(得分:0)
所以,我在“浏览”按钮中尝试了Focusable =“False”,它有效!)