C# 如何使文本在wpf组合框中可单击?

C# 如何使文本在wpf组合框中可单击?,c#,wpf,C#,Wpf,目前,我的组合框工作正常,尽管我希望当用户按下我的组合框的文本字段时,下拉菜单会显示出来 我可以在代码中这样做,例如使用MouseLeftButtonUp这样的事件,但效果很差,尤其是在标题上连续几次按下鼠标左键时 <ComboBox Name="comboBox1" IsTextSearchEnabled="False" HorizontalContentAlignment="Stretch" Grid.Column="1" IsEditable="Tr

目前,我的组合框工作正常,尽管我希望当用户按下我的组合框的文本字段时,下拉菜单会显示出来

我可以在代码中这样做,例如使用MouseLeftButtonUp这样的事件,但效果很差,尤其是在标题上连续几次按下鼠标左键时

                <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;
        };
    }
}