2

我有一个带有“浏览”按钮的小型用户控件,用于选择一些文件,并带有用于可视化所选文件路径的文本框:

<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"

4

2 回答 2

0

在 YourUserControl.xaml.cs 中:

public partial class YourUserControl : UserControl
{
    public YourUserControl()
    {
        InitializeComponent();
        this.OkBtn.Focus();
    }
}

对不起,我的错,你可以试试:

<ControlTemplate TargetType="{x:Type Window}" FocusManager.FocusedElement="{Binding ElementName=OkBtn}">

?

于 2013-01-28T12:34:32.460 回答
0

所以,我只是在“浏览”按钮中尝试了 Focusable="False",它有效!)

于 2013-01-28T13:31:56.657 回答