簡體   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