Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.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
C# 组合框项目选择可使用键盘,但不能使用鼠标_C#_Wpf_Xaml_Combobox_Datatemplate - Fatal编程技术网

C# 组合框项目选择可使用键盘,但不能使用鼠标

C# 组合框项目选择可使用键盘,但不能使用鼠标,c#,wpf,xaml,combobox,datatemplate,C#,Wpf,Xaml,Combobox,Datatemplate,我有一个组合框,它在运行时不能像我期望的那样工作。我可以使用鼠标展开下拉窗口,但单击某个项目似乎无法选中它。下拉列表将消失,但选择不会更改。使用键盘时,相同的控件似乎与预期一样工作。向上/向下箭头更改选择。我可以使用箭头键进行选择,也可以通过输入选择来更改值 如何单击以选择项目 <DataTemplate DataType="{x:Type myType}"> <Border ...> <Grid x:Name="upperLayout"&g

我有一个组合框,它在运行时不能像我期望的那样工作。我可以使用鼠标展开下拉窗口,但单击某个项目似乎无法选中它。下拉列表将消失,但选择不会更改。使用键盘时,相同的控件似乎与预期一样工作。向上/向下箭头更改选择。我可以使用箭头键进行选择,也可以通过输入选择来更改值

如何单击以选择项目

  <DataTemplate DataType="{x:Type myType}">
    <Border ...>
      <Grid x:Name="upperLayout">
        <Grid x:Name="lowerLayout">
          <ComboBox x:Name="combo"
            Grid.Column="2"
            ItemsSource="{Binding Things}"
            SelectedItem="{Binding SelectedThing}"
            >
            <ComboBox.ItemTemplate>
              <DataTemplate>
                <TextBlock Text="{Binding Name}" />
              </DataTemplate>
            </ComboBox.ItemTemplate>
          </ComboBox>
        </Grid>
      </Grid>
    </Border>
  </DataTemplate>

我真的无法从您的代码中判断出问题所在,但是,我强烈建议您使用Snoop调试控件()

按住Ctrl+Shift键并将鼠标指向组合框应该获取输入的位置,您将立即发现谁是焦点,而不是组合框

您甚至可以更改属性的值,这是调试模板的最佳朋友

编辑

恐怕你发布的代码对我有用:


公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
加载+=主窗口\u加载;
}
已加载私有void主窗口(对象发送器、路由目标)
{
MyType类型=新的MyType()
{
Things=new List(){new MyThing(){Name=“aaa”},new MyThing(){Name=“bbb”}
};
内容。内容=类型;
}
}
公共类MyType
{
公共神话选择内容{get;set;}
公共列表事物{get;set;}
}
公共阶级神话
{
公共字符串名称{get;set;}
}

可能还有其他问题,比如没有键的样式或其他什么,发布更多您遇到问题的代码。

根本原因是另一个开发人员实现了一些代码,这些代码改变了对预览鼠标按下事件的关注。此代码已更新为具有所需的行为,而无需修改焦点,组合框现在可以按预期工作。诊断所需的信息不在原始问题中(无法全部发布…。

当您更改
SelectedItem
时,
SelectedThing
是否会更改?可能相关您是否尝试查看是否调用SelectionChanged?只需将事件添加为方法并将其断点即可。我认为TextBlock是默认值,因此您可以只设置DisplayMemberPath。我怀疑这会解决问题,但值得一试。我甚至会尝试RO文本框。SelectionChanged没有被调用,DisplayMemberPath实现了,并且使XAML更简单。发现问题,请参阅提供的答案。