C# 如何使文本在wpf组合框中可单击?
目前,我的组合框工作正常,尽管我希望当用户按下我的组合框的文本字段时,下拉菜单会显示出来 我可以在代码中这样做,例如使用MouseLeftButtonUp这样的事件,但效果很差,尤其是在标题上连续几次按下鼠标左键时C# 如何使文本在wpf组合框中可单击?,c#,wpf,C#,Wpf,目前,我的组合框工作正常,尽管我希望当用户按下我的组合框的文本字段时,下拉菜单会显示出来 我可以在代码中这样做,例如使用MouseLeftButtonUp这样的事件,但效果很差,尤其是在标题上连续几次按下鼠标左键时 <ComboBox Name="comboBox1" IsTextSearchEnabled="False" HorizontalContentAlignment="Stretch" Grid.Column="1" IsEditable="Tr
<ComboBox Name="comboBox1" IsTextSearchEnabled="False" HorizontalContentAlignment="Stretch" Grid.Column="1" IsEditable="True" DropDownClosed="OnDropDownClosed" Text="The title for my combobox" Margin="30,0,0,0" Grid.ColumnSpan="2" IsReadOnly="True">
<ComboBox.ItemTemplate>
<DataTemplate>
<CheckBox Name="CheckBox1" IsChecked="{Binding IsChecked, Mode=TwoWay}" Visibility="{Binding IsVisible, Mode=TwoWay}">
<CheckBox.Content>
<TextBlock Text="{Binding name}" Margin="5" />
</CheckBox.Content>
</CheckBox>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
您可以这样处理GotFocus或GotKeyboardFocus事件:
private void comboBox1_GotFocus(object sender, RoutedEventArgs e)
{
if (!comboBox1.IsDropDownOpen)
comboBox1.IsDropDownOpen = true;
}
这是可行的,但在组合框上按几下,框可能不会再次打开,因为焦点没有改变 处理组合框的已加载事件,并为文本框的PreviewMouseLeftButtonDown连接事件处理程序,然后:
该活动添加到何处?当连续几次按下鼠标左键时会发生什么情况?这会起作用,但在组合框上按下几次时,框可能不会再次打开,因为焦点没有改变
private void comboBox1_Loaded(object sender, RoutedEventArgs e)
{
ComboBox cmb = sender as ComboBox;
TextBox textBox = cmb.Template.FindName("PART_EditableTextBox", cmb) as TextBox;
if (textBox != null)
{
textBox.PreviewMouseLeftButtonDown += (ss, ee) =>
{
if (!comboBox1.IsDropDownOpen)
comboBox1.IsDropDownOpen = true;
};
}
}