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