如何从选定的 WPF ComboBox 项 C# 中显示内容
Posted
技术标签:
【中文标题】如何从选定的 WPF ComboBox 项 C# 中显示内容【英文标题】:How to display content from selected WPF ComboBox item C# 【发布时间】:2021-03-11 08:10:02 【问题描述】:我希望每个人都很好我正在用 C# 和 WPF 构建一个小应用程序,我正在尝试添加一个功能,当单击组合框并选择某个元素时,我想显示文本的内容,但我 似乎做错了。我想就如何解决这个问题提供一些意见,请查看 C# 代码,如果您有解决方案,请发布,谢谢,请注意您可能从代码中看到,我是初学者编码器。提前感谢您的帮助。
namespace WPFDemo
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
public MainWindow()
InitializeComponent();
textToDisplay.IsReadOnly = true;
SaveFileDialog saveFileDialog = new SaveFileDialog();
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Title = "Import new template";
openFileDialog.Filter = "Text files (*.txt)|*.txt";
saveFileDialog.Filter = "Text files (*.txt)|*.txt";
loadTemplates();
// Load the templates in the directory
private void loadTemplates()
string[] templates = Directory.GetFiles(@"C:\Users\injanlee\source\repos\WPFDemo\WPFDemo\Snow Templates");
Array.Sort(Directory.GetFiles(@"C:\Users\injanlee\source\repos\WPFDemo\WPFDemo\Snow Templates"));
Array.Sort(templates);
foreach (string template in templates)
//string fileName = template.Split("\\")[5].Split(".")[0];
string fName = System.IO.Path.GetFileName(template);
selectOption.Items.Add(fName);
private async Task Sleep(int miliSeconds)
await Task.Delay(miliSeconds);
myLabel.Content = " ";
private async void Submit_Click(object sender, RoutedEventArgs e)
Clipboard.SetText(textToDisplay.Text);
myLabel.Content = "Copied to clipboard";
myLabel.Foreground = new SolidColorBrush(Colors.DarkGreen);
await Sleep(3000);
private void DisplayFileContent(string path)
textToDisplay.Clear();
try
string[] fileContent = File.ReadAllLines(path);
foreach (string line in fileContent)
textToDisplay.Text += line;
textToDisplay.Text += "\n";
catch
MessageBox.Show($"Unable to find the path for the specific selected File: selectOption.Text");
// Import and save new file template
public void importTemplate_Click(object sender, RoutedEventArgs e)
SaveFileDialog saveFileDialog = new SaveFileDialog();
OpenFileDialog openFileDialog = new OpenFileDialog();
saveFileDialog.Title = "Save To";
openFileDialog.Title = "Import new template";
openFileDialog.Filter = "Text files (*.txt)|*.txt";
saveFileDialog.Filter = "Text files (*.txt)|*.txt";
if (openFileDialog.ShowDialog() == true)
string[] fileName = openFileDialog.FileName.Split("\\");
string importedFileName = fileName[5].Split(".")[0];
saveFileDialog.FileName = importedFileName;
if (saveFileDialog.ShowDialog() == true)
string location = saveFileDialog.FileName;
File.Copy(openFileDialog.FileName, location, true);
selectOption.Items.Add(fileName[5].Split(".")[0]);
MessageBox.Show("Impor successfull");
private void selectOption_SelectionChanged(object sender, SelectionChangedEventArgs e)
if (selectOption.SelectedIndex == 0)
DisplayFileContent(@"C:\Users\injanlee\source\repos\WPFDemo\WPFDemo\Snow Templates\Template.txt");
【问题讨论】:
这段代码遇到了什么问题? 基本上当你在项目列表中选择一个选项时,我想显示文本的内容,除了我不能正确,问题是我不知道如何获取选定的名称项目,例如,如果我选择删除浏览模板项目,我想显示那个.txt文件的内容,现在我知道如何显示它,但我不知道如何动态获取所选项目的名称 一般来说,你做的每件事都是错误的(对我来说太难了)。考虑学习一些关于 WPF 和 MVVM 编程模式中的数据绑定的知识。还将启动代码从 Window 构造函数移动到Window.Loaded
事件处理程序。简而言之,您可以使用selectOption.SelectedItem
属性来获取所选项目的内容。
提示:单行显示文字:textToDisplay.Text = File.ReadAllText(path)
@aepot,非常感谢,过去一周我一直在努力解决这个问题,这是一个简单的 SelectOption.selectedItem。我非常感谢您的帮助,也感谢您提供的提示,我刚刚实施了更改并且效果很好。非常感激。我从你那里学到了很多,谢谢你
【参考方案1】:
@aepot 回答了这个问题:
简而言之,您可以使用
selectOption.SelectedItem
属性来获取所选项目的内容。
【讨论】:
以上是关于如何从选定的 WPF ComboBox 项 C# 中显示内容的主要内容,如果未能解决你的问题,请参考以下文章
WPF MVVM 将 ComboBox 绑定到 Datagrid 选定项
WPF IsEditable=true 填充了对象的 ComboBox 将 ToString() 显示为选定项
C# WPF 如何向combobox控件添加类型为comboboxitem的项?