【问题标题】:Set focus on user Control's text box when child window is opened打开子窗口时将焦点设置在用户控件的文本框上
【发布时间】:2013-09-18 20:50:41
【问题描述】:

我有一个简单的 WPF 窗口,它承载一个用户控件。用户控件包含一个标签、文本框和几个按钮。确定为默认按钮和取消按钮。我从我的父窗口启动此对话框/窗口。我想要实现的是当这个对话框启动时,TextBox 应该有输入控件。我试图将选项卡索引设置为 0,但这似乎不起作用。

当窗口打开时,我必须按一次 Tab 才能在编辑框中获取输入控件。这是我的 TextBox 的 xaml 的样子

<TextBox Text="{Binding Name, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" VerticalContentAlignment="Center" AcceptsReturn="False" TabIndex="0"></TextBox>

此外,我希望此窗口在其父窗口的中心打开。我已经设置了

<Window .......   WindowStyle="ToolWindow" Topmost="True" ShowInTaskbar="False" ResizeMode="NoResize" WindowStartupLocation="CenterOwner">

在多个屏幕上,窗口始终在主监视器上打开。我怎样才能让它在父母窗口的中心打开?

P.S:最好我想在 WPF 中执行此操作。

【问题讨论】:

  • 你如何准确地打开对话框,似乎你想要模态但你正在打开无模式(或与不同的所有者)......我也看不出拥有如此简单的用户控件的意义(在其他情况下似乎无法重用)作为窗口中唯一的孩子,为什么不将所有东西都托管在窗口本身?

标签: wpf xaml wpf-controls


【解决方案1】:

对于您的第一个问题,请编写以下代码:

public YourChildWindow()
{
    InitializeComponent();

    YourTextBox.Focus();
}

第二个问题:必须将子窗口的StartupLocation 设置为CenterOwner 将子窗口的Owner 设置为ParentWindow 才能显示子窗口。例如,在父窗口中编写这段代码:

Window ownedWindow = new Window();
ownedWindow.Owner = this;
ownedWindow.Show();

根据http://msdn.microsoft.com/en-us/library/system.windows.window.owner.aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-22
    • 2017-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多