繁体   English   中英

组合框没有得到关注

[英]Combobox doesn't get focus

我有一个不可编辑的组合框( SupplierDropdown ),我希望当用户选择列表上的最后一个值时,该组合框应变为可编辑的,没有任何值,并自动聚焦以供用户键入其值。 换句话说,一个可编辑的空白框带有闪烁的光标,可供输入。

这是我的代码:

private void SupplierDropdown_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        if (SupplierDropdown.SelectedIndex == SupplierDropdown.Items.Count - 1)
        {
            SupplierDropdown.IsEditable = true;
            SupplierDropdown.Text = "";
            SupplierDropdown.Focus();
        }
    }

但是,尽管组合框确实可以编辑,但其余代码似乎不起作用:(a)组合框无法清除用户选择的值,并且(b)组合框无法获得焦点,用户需要点击一次标签,才能在组合框中看到闪烁的光标。

我该如何进行这项工作?

这似乎是一个很大的痛苦,因为该控件不打算以这种方式使用。 即使您可以使用初始逻辑,也很难以合理的方式关闭可编辑标志。 当用户输入与给定选项部分匹配的文本时,它将选择所述选项。 您怎么知道该选择是偶然还是有意引起的,因此是否应将可编辑标志再次设置为false?

建议使用其他TextBox方案,仅在其中显示任何自定义值的TextBox ,只能在XAML中完成(如果您知道要触发的值),但这不是必需的。

<ComboBox Name="cb" SelectedValuePath="Content">
    <ComboBoxItem>A</ComboBoxItem>
    <ComboBoxItem>B</ComboBoxItem>
    <ComboBoxItem>Other</ComboBoxItem>
</ComboBox>
<TextBox>
    <TextBox.Style>
        <Style TargetType="TextBox">
            <Setter Property="Visibility" Value="Collapsed"/>
            <Style.Triggers>
                <DataTrigger Binding="{Binding SelectedValue, ElementName=cb}" Value="Other">
                    <Setter Property="Visibility" Value="Visible"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBox.Style>
</TextBox>

(PS:这是一个使用项目/值而不是索引的示例,即使有人决定将“其他”选项放在顶部,该代码仍将按预期工作,而您不会。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM