可编辑的ComboBox打开选择文件对话框

时间:2017-09-02 00:29:02

标签: c# wpf xaml combobox

我有一个包含3个选项的ComboBox:

  • 自动
  • 选择

offauto是常规项,但select会将ComboBox更改为editable并打开Select File对话框。

但是当我按下确定时,所选文件将不会出现在使用myComboBox.Text = selectFile.FileName的ComboBox可编辑文本框中。

如何让文字显示在文本框中?

XAML

<ComboBox x:Name="myComboBox" 
          Margin="0,164,14,0" 
          VerticalAlignment="Top"
          HorizontalAlignment="Right"
          Width="103" 
          IsTextSearchEnabled="False"
          SelectionChanged="myComboBox_SelectionChanged">
    <System:String>off</System:String>
    <System:String>auto</System:String>
    <System:String>select</System:String>
</ComboBox>

C#

private void myComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    if ((string)myComboBox.SelectedItem == "select")
    {
        myComboBox.IsEditable = true;

        // Open 'Select File'
        Microsoft.Win32.OpenFileDialog selectFile = new Microsoft.Win32.OpenFileDialog();
        selectFile.RestoreDirectory = true;
        Nullable<bool> result = selectFile.ShowDialog();

        // Process dialog box
        if (result == true)
        {
            myComboBox.Text = selectFile.FileName;
        }
    }

    else if ((string)myComboBox.SelectedItem != "select" 
        && !string.IsNullOrEmpty((string)myComboBox.SelectedItem))
    {
        myComboBox.IsEditable = false;
    }
}

1 个答案:

答案 0 :(得分:1)

您无法在组合框中选择一个项目,该项目不是组合框列表中的项目之一。因此,要完成您想要的任务,您需要将所选文件添加到项目列表中,然后选择它。像这样......

            // Process dialog box
            if (result == true)
            {
                myComboBox.Items.Add(selectFile.FileName);
                myComboBox.SelectedItem = selectFile.FileName;
            }