【发布时间】:2016-01-07 07:12:41
【问题描述】:
我尝试了一个从文件夹中检索视频名称的代码。当我从组合框中选择某些项目时,它不会在组合框选择中显示名称。我通过stackoverflow浏览了所有的东西。但没有一个能解决问题。请有任何建议。
代码
public partial class TextToSignWindow : Window
{
public TextToSignWindow()
{
InitializeComponent();
var rootFolder = System.IO.Path.GetDirectoryName(
System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase);
var root = rootFolder + @"\Videos\";
string localPath = new Uri(root).LocalPath;
PopulateListBox(data,localPath, "*.wmv");
}
private void PopulateListBox(ComboBox cmb, string Folder, string FileType)
{
DirectoryInfo dinfo = new DirectoryInfo(Folder);
FileInfo[] Files = dinfo.GetFiles(FileType);
foreach (FileInfo file in Files)
{
var ext = Path.GetExtension(file.Name);
var name = Path.GetFileNameWithoutExtension(file.Name);
cmb.Items.Add(name);
}
}
private void data_SelectionChanged_1(object sender, SelectionChangedEventArgs e)
{
data.SelectedValue =data.SelectedItem.ToString();
}
}
WPF
<ComboBox x:Name="data"
IsEditable="True"
FontFamily="verdana"
IsSynchronizedWithCurrentItem="True"
FontSize="28"
Text=""
HorizontalAlignment="Left"
Height="81"
Margin="29,214,0,0"
VerticalAlignment="Top"
Width="326"
SelectionChanged="data_SelectionChanged_1"
SelectedItem="{Binding SelectedItem}" />
【问题讨论】:
-
试试这个:cmd.Items.add(new { FileName = name });删除:SelectedItem="{Binding SelectedItem}" 添加:DisplayMemberPath="FileName" SelectedValuePath="FileName"
-
@Kris 在
data.SelectedValue =data.SelectedItem.ToString()传递了一个异常 -
动态 selectedItem = data.SelectedItem; data.SelectedValue = selectedItem.FileName;
-
@Kris 仍然不显示名称是选中项
-
当 SelectionChanged 事件触发时,您不应将所选值设置为自身。动态 selectedItem = data.SelectedItem; var SelectedValue = selectedItem.FileName;