WPF 文本框焦点

标签 wpf focus .net

我将焦点设置在这样的文本框上:

<DockPanel
        Margin="0,0,0,0"
        LastChildFill="True"
        FocusManager.FocusedElement="{Binding ElementName=messengerTextToSend}">
        <ListBox
            x:Name="messengerLabelParticipants"
            DockPanel.Dock="Top" Height="79" Margin="0,1,0,0" Padding="0"
            Background="{x:Null}" BorderBrush="{x:Null}" BorderThickness="0"
            AllowDrop="True"
            ItemsSource="{Binding Path=involvedUsers}" ItemTemplate="{StaticResource chatParticipants}" Tag="{Binding Path=chatSessionID}"
            Drop="participantList_Drop" DragEnter="participantList_DragEnter" DragLeave="messengerLabelParticipants_DragLeave">
        </ListBox>
        <TextBox
            x:Name="messengerTextToSend"
            Focusable="True"
            Margin="10,0,10,10"
            DockPanel.Dock="Bottom" Height="100"
            Tag="{Binding Path=.}"
            KeyUp="messengerTextToSend_KeyUp"
            Cursor="IBeam"
            Style="{StaticResource messengerTextBoxSendText}"/>
        <ScrollViewer 
            x:Name="messengerScroller" 
            Template="{DynamicResource ScrollViewerControlTemplate1}" 
            ScrollChanged="messengerScroller_ScrollChanged" Loaded="messengerScroller_Loaded"
            Margin="0,10,0,10">
            <ListBox
                x:Name="messengerListMessages"
                Margin="10,0,0,0" Padding="0" 
                Background="{x:Null}" BorderBrush="{x:Null}" BorderThickness="0"
                IsSynchronizedWithCurrentItem="True"
                ItemsSource="{Binding Path=messages}" ItemTemplateSelector="{StaticResource messageTemplateSelector}">
            </ListBox>
        </ScrollViewer>
    </DockPanel>

但是,当页面加载时,虽然文本框在视觉上看起来有焦点,但光标是静态的,我必须手动单击文本框或选项卡才能开始输入。我不确定我做错了什么,但我尝试了所有设置,包括在代码中设置它以使其正常工作。任何帮助将不胜感激。

最佳答案

将 FocusManager.FocusedElement 命令移至 Window 元素。

<Window x:Class="MYClass.Views.MainView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="My Window" 
    FocusManager.FocusedElement="{Binding ElementName=messengerTextToSend}"> 
    Height="400" 
    Width="600">
   <DockPanel>
   </DockPanel>
</Window>

看看这个 question对于用户控件的情况。

关于WPF 文本框焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2966179/

相关文章:

wpf - 在 WPF 中保留 ListView 列布局的最佳实践

c# - 从 C# 应用程序内部存储空整数值

c# - WPF MVVM 从 icommand 执行更改父窗口 View 模型

python - 如何使用 Tkinter 并让我的应用程序保持焦点?

c# - 无法在我的 WPF 应用程序中使用 Array.Copy()

java - .NET 开发人员有几个小时的时间来参加 Java 能力测试。该怎么办?

c# - 是否可以让我的 c# wpf 程序知道用户是否有触摸屏?

java - 带有彩色项目和焦点的彩色 jcombobox

javascript - 如何在 Odoo 中聚焦一个 TransientModel 形式的字段?

c# - 以图像的实际大小获取鼠标的真实位置,而不是鼠标在 PictureBox 中的位置