Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 如何使下拉列表中的选定项在组合框中显示焦点,而不仅仅是文本_Wpf_Drop Down Menu_Combobox_Focus - Fatal编程技术网

Wpf 如何使下拉列表中的选定项在组合框中显示焦点,而不仅仅是文本

Wpf 如何使下拉列表中的选定项在组合框中显示焦点,而不仅仅是文本,wpf,drop-down-menu,combobox,focus,Wpf,Drop Down Menu,Combobox,Focus,我有一个WPF应用程序,它使用一个组合框,其中包含从服务器填充的项目。该控件在当前设置下运行良好,但有一个小问题我想解决。当我点击下拉按钮打开项目列表时,我只能选择鼠标悬停在项目文本上的项目。如果将鼠标悬停在该行上,而不是直接悬停在文本上,则控件似乎无法识别应选择的行。是否需要将焦点设置在当前行而不仅仅是项目上 编辑 comboBox存储在UserControl中,该控件派生自处理客户端和服务器之间的网络传输的类。XAML只创建控件并为其指定名称,而代码隐藏执行所有逻辑。在这种情况下,服务器发送

我有一个WPF应用程序,它使用一个组合框,其中包含从服务器填充的项目。该控件在当前设置下运行良好,但有一个小问题我想解决。当我点击下拉按钮打开项目列表时,我只能选择鼠标悬停在项目文本上的项目。如果将鼠标悬停在该行上,而不是直接悬停在文本上,则控件似乎无法识别应选择的行。是否需要将焦点设置在当前行而不仅仅是项目上

编辑

comboBox存储在UserControl中,该控件派生自处理客户端和服务器之间的网络传输的类。XAML只创建控件并为其指定名称,而代码隐藏执行所有逻辑。在这种情况下,服务器发送用于组合框的信息,在下面提供的代码段中,获取带有文本项的XML并将其分配给控件本身。这一切都很好,但问题是当客户端尝试选择项目时。除非鼠标直接位于文本上方,否则组合框不会注册。我想让它,使组合框选择的项目,只要鼠标是在同一行作为文本

XAML


提前感谢您的建议。

尝试将此文本框放置在dockpanel或网格中

是否有数据模板来显示您的项目?请发布代码(xaml),这样您的意思就更清楚了。我已经添加了一小段代码,在这里我将项目添加到组合框中。不知道我还需要粘贴多少,或者由于NDA我可以粘贴多少,所以请耐心等待。您是否也有描述组合框的xaml代码?如果您担心NDA,那么请删除所有与公司相关的信息,并用琐碎的名称替换变量名。我将文本框作为ComboBoxItem的内容。谢谢你的帮助。
<local:Control x:Class="ControlLibrary.ComboBox"
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
     xmlns:local="clr-namespace:ControlLibrary" >
    <ComboBox Name="comboBox" FontWeight="Bold" />
</local:Control>  
XmlNodeList nodelist = xmlNode.SelectNodes("Items");
comboBox.Items.Clear();
foreach (XmlNode node in nodelist)
{
    ComboBoxItem tempItem = new ComboBoxItem()
    {
        Content = node.Attributes["text"].Value
    };

    comboBox.Items.Add(tempItem);
}