Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#在选择编辑更改后更新组合框文本_C#_Wpf_Combobox - Fatal编程技术网

C#在选择编辑更改后更新组合框文本

C#在选择编辑更改后更新组合框文本,c#,wpf,combobox,C#,Wpf,Combobox,我有一个组合框,我希望物理显示的文本始终保持不变 我希望用户选择一个项目,然后传入,但组合框上的实际文本保持不变 在 FileBox_SelectionChanged(object sender, SelectionChangedEventArgs e) 事件i找出已使用选择的项目 if (((ComboBox)sender).SelectedItem != null) { if (((ComboBox)sender).SelectedItem.ToS

我有一个组合框,我希望物理显示的文本始终保持不变

我希望用户选择一个项目,然后传入,但组合框上的实际文本保持不变

FileBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
事件i找出已使用选择的项目

 if (((ComboBox)sender).SelectedItem != null)
        {
            if (((ComboBox)sender).SelectedItem.ToString() == "New File")
            {

            }
        }
(稍后我将进一步处理此问题)

然后我尝试将文本更新回“File”

我尝试过许多似乎不起作用的方法

我试着简单地做

FileBox.text = "File";

this.Dispatcher.Invoke(() =>
        {
            FileBox.Text = "File";
        });

FileBox.SelectedItem = "File";
调试时,它实际上看起来像是.Text属性被更新了,但在事件完成时它似乎被覆盖了。对于测试,我有一个按钮,用于:

var text = FileBox.Text;
FileBox.Text = "File";
当我选择“新建文件”时,var text==新建文件

这里的FileBox.Text代码工作并将其更新回文件

我是否需要在SelectionChanged事件之外再次设置文本,如果需要,我将如何进行设置

谢谢

编辑


我不认为这是一个重复的张贴,因为他希望他的默认值消失时,选择的东西,我希望它重新出现

的方法实际上是不理想的,你应该使用MVVM模式,但这是我对你的问题的回答,希望它有帮助

<ComboBox x:Name="FileBox"
                  SelectedIndex="0"
                  SelectionChanged="FileBox_OnSelectionChanged"
                  Width="180" Height="50" > 
假设这是填充控件的方式:

private void PopulateFileData()
        {
            FileDataList = new List<FileData>
            {
                new FileData{ FileName = "Files", Path = "" },
                new FileData{ FileName = "File 123", Path = @"c:\file1.txt" },
                new FileData{ FileName = "File 456", Path = @"c:\file2.txt" }
            };
        }

        private void FillComboBox()
        {
            foreach (FileData file in FileDataList)
            {
                FileBox.Items.Add(file.FileName);
            }
        }
private void PopulateFileData()
{
FileDataList=新列表
{
新文件数据{FileName=“Files”,Path=“”},
新文件数据{FileName=“File 123”,Path=@“c:\file1.txt”},
新文件数据{FileName=“File 456”,Path=@“c:\file2.txt”}
};
}
私有void FillComboBox()
{
foreach(FileDataList中的FileData文件)
{
FileBox.Items.Add(file.FileName);
}
}

检查您的输出窗口。

因此,基本上,您希望您的组合框的默认选定项“文件”在您的代码获得用户选择的项目后再次被选中?您是否尝试过
FileBox.SelectedIndex=-1
?@Mac yes这基本上就是我想要的need@LennartStoop刚刚试过这个,这似乎不适用于可能的重复
private void PopulateFileData()
        {
            FileDataList = new List<FileData>
            {
                new FileData{ FileName = "Files", Path = "" },
                new FileData{ FileName = "File 123", Path = @"c:\file1.txt" },
                new FileData{ FileName = "File 456", Path = @"c:\file2.txt" }
            };
        }

        private void FillComboBox()
        {
            foreach (FileData file in FileDataList)
            {
                FileBox.Items.Add(file.FileName);
            }
        }