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更简单。发现问题,请参阅提供的答案。