从ListView获取SelectedItem [英] Get SelectedItem from ListView
问题描述
HI!我有ListView的问题。我无法获得我选择的价值。在我将Item作为类添加到ListView之前,我无法让一个selectedItem对它做一些事情。我展示了我的代码并且请...我是初学者:)
问题在于Select_dir()..你能帮助我吗? :(
public MainWindow()
{
InitializeComponent();
var drives = DriveInfo.GetDrives();
foreach(驱动器中的DriveInfo目录)
{
Disc_1.Items.Add(dir.Name) ;
Disc_2.Items.Add(dir.Name);
}
}
公共类文件
{
公共字符串名称{get; set;}
公共字符串类型{get; set;}
public long size {get; set;}
public DateTime date {get; set;}
}
public List< Files> myFile {get; set;}
private void select_path(object sender,SelectionChangedEventArgs e)
{
string path;
if(Disc_1.SelectedIndex> -1)
{
path = Disc_1.SelectedItem.ToString();
show_elements(path,Disc_1,lv_1);
}
if(Disc_2.SelectedIndex> -1)
{
path = Disc_2.SelectedItem.ToString();
show_elements(path,Disc_2,lv_2);
}
}
private void Select_dir(object sender,SelectionChangedEventArgs e)
{
if(lv_1.SelectedIndex> -1) )
{
Files file = new Files();
file = lv_1.SelectedItem;
string n = file.name;
}
}
private void Show_elements(字符串d,ComboBox光盘,ListView lv )
{
lv.Items.Clear();
string [] dirs = Directory.GetDirectories(d);
string [] files = Directory.GetFiles(System.IO.Path.GetFullPath(d));
foreach(dirs中的字符串目录)
{
disc.Items.Add(dir);
文件dire = new Files();
var dir_ = new DirectoryInfo(dir).Name;
var date_last = Directory.GetLastWriteTime(dir);
dire.name = dir_;
dire.type =" dir" ;;
dire.date = date_last;
lv.Items.Add(dire);
}
myFile = new List< Files>();
foreach(文件中的字符串f)
{
Files file = new Files();
file.name = System.IO.Path.GetFileNameWithoutExtension(f);
file.type = System.IO.Path.GetExtension(f);
file.size = new FileInfo(f).Length;
file.date = new FileInfo(f).LastWriteTime;
lv.Items.Add(file);
}
}
}
< Grid>
< ListView SelectionChanged =" Select_dir"名称= QUOT; lv_1" ItemsSource =" {Binding myFile}"的HorizontalAlignment = QUOT;左"高度= QUOT; 218"余量= QUOT; 21,50,0,0" VerticalAlignment = QUOT;陀螺"宽度= QUOT; 394">
< ListView.View>
< GridView>
< GridViewColumn DisplayMemberBinding =" {Binding name}"头= QUOT;姓名"宽度= QUOT; 140" />
< GridViewColumn DisplayMemberBinding =" {Binding type}"头= QUOT;典型值"宽度= QUOT; 50" />
< GridViewColumn DisplayMemberBinding =" {Binding size}"头= QUOT;尺寸"宽度= QUOT; 60 QUOT; />
< GridViewColumn DisplayMemberBinding =" {Binding date}"头= QUOT;日期"宽度= QUOT; 140" />
< / GridView>
< /ListView.View>
< / ListView>
< ListView SelectionChanged =" Select_dir"名称= QUOT; lv_2"的HorizontalAlignment = QUOT;左"高度= QUOT; 218"余量= QUOT; 500,50,0,0" VerticalAlignment = QUOT;陀螺"宽度= QUOT; 377" RenderTransformOrigin = QUOT; 0.725,0.523">
< ListView.View>
< GridView>
< GridViewColumn DisplayMemberBinding =" {Binding name}"头= QUOT;姓名"宽度= QUOT; 140" />
< GridViewColumn DisplayMemberBinding =" {Binding type}"头= QUOT;典型值"宽度= QUOT; 50" />
< GridViewColumn DisplayMemberBinding =" {Binding size}"头= QUOT;尺寸"宽度= QUOT; 60 QUOT; />
< GridViewColumn DisplayMemberBinding =" {Binding date}"头= QUOT;日期"宽度= QUOT; 140" />
< / GridView>
< /ListView.View>
< / ListView>
< Button Content =" Open"的HorizontalAlignment = QUOT;左"余量= QUOT; 33,292,0,0" VerticalAlignment = QUOT;陀螺"宽度= QUOT; 75" />
< Button Content ="复制"的HorizontalAlignment = QUOT;左"余量= QUOT; 248,292,0,0" VerticalAlignment = QUOT;陀螺"宽度= QUOT; 75" />
< Button Content =" Move"的HorizontalAlignment = QUOT;左"余量= QUOT; 584,292,0,0" VerticalAlignment = QUOT;陀螺"宽度= QUOT; 75" />
< Button Content ="删除"的HorizontalAlignment = QUOT;左"余量= QUOT; 788,292,0,0" VerticalAlignment = QUOT;陀螺"宽度= QUOT; 75" RenderTransformOrigin = QUOT; 4.79,0.162" />
< ComboBox Name =" Disc_1"的SelectionChanged = QUOT; select_path"的HorizontalAlignment = QUOT;左"余量= QUOT; 33,10,0,0" VerticalAlignment = QUOT;陀螺"宽度= QUOT; 184" />
< ComboBox Name =" Disc_2"的SelectionChanged = QUOT; select_path"的HorizontalAlignment = QUOT;左"余量= QUOT; 679,10,0,0" VerticalAlignment = QUOT;陀螺"宽度= QUOT; 184" RenderTransformOrigin = QUOT; 1.605,0.713" />
< / Grid>
< blockquote>
你好BaNaw,
这个论坛讨论并提出有关C#编程语言的问题,因为你的问题与WPF有关,我将把它移到WPF论坛寻求合适的支持。
感谢您的理解。
祝你好运,
张龙
HI! I Have a problem with ListView. I can't get value which I selected. Before I add Item as class to ListView and after i can't get one selectedItem to do something with it. I show my code and please.. I'm beginner :)
Problem is in Select_dir().. Can You help me? :(
public MainWindow() { InitializeComponent(); var drives = DriveInfo.GetDrives(); foreach (DriveInfo dir in drives) { Disc_1.Items.Add(dir.Name); Disc_2.Items.Add(dir.Name); } } public class Files { public string name { get; set; } public string type { get; set; } public long size { get; set; } public DateTime date { get; set; } } public List<Files> myFile { get; set; } private void select_path(object sender, SelectionChangedEventArgs e) { string path; if ( Disc_1.SelectedIndex > -1) { path = Disc_1.SelectedItem.ToString(); show_elements(path, Disc_1, lv_1); } if (Disc_2.SelectedIndex > -1) { path = Disc_2.SelectedItem.ToString(); show_elements(path, Disc_2, lv_2); } } private void Select_dir(object sender, SelectionChangedEventArgs e) { if(lv_1.SelectedIndex > -1) { Files file = new Files(); file = lv_1.SelectedItem; string n = file.name; } } private void Show_elements(string d, ComboBox disc , ListView lv ) { lv.Items.Clear(); string[] dirs = Directory.GetDirectories(d); string[] files = Directory.GetFiles(System.IO.Path.GetFullPath(d)); foreach (string dir in dirs) { disc.Items.Add(dir); Files dire = new Files(); var dir_ = new DirectoryInfo(dir).Name; var date_last = Directory.GetLastWriteTime(dir); dire.name = dir_; dire.type = "dir"; dire.date = date_last; lv.Items.Add(dire); } myFile = new List<Files>(); foreach (string f in files) { Files file = new Files(); file.name = System.IO.Path.GetFileNameWithoutExtension(f); file.type = System.IO.Path.GetExtension(f); file.size = new FileInfo(f).Length; file.date = new FileInfo(f).LastWriteTime; lv.Items.Add(file); } } }
<Grid> <ListView SelectionChanged="Select_dir" Name="lv_1" ItemsSource="{Binding myFile}" HorizontalAlignment="Left" Height="218" Margin="21,50,0,0" VerticalAlignment="Top" Width="394"> <ListView.View> <GridView> <GridViewColumn DisplayMemberBinding="{Binding name}" Header="Name" Width="140"/> <GridViewColumn DisplayMemberBinding="{Binding type}" Header="Typ" Width="50"/> <GridViewColumn DisplayMemberBinding="{Binding size}" Header="Size" Width="60"/> <GridViewColumn DisplayMemberBinding="{Binding date}" Header="Date" Width="140"/> </GridView> </ListView.View> </ListView> <ListView SelectionChanged="Select_dir" Name="lv_2" HorizontalAlignment="Left" Height="218" Margin="500,50,0,0" VerticalAlignment="Top" Width="377" RenderTransformOrigin="0.725,0.523"> <ListView.View> <GridView> <GridViewColumn DisplayMemberBinding="{Binding name}" Header="Name" Width="140"/> <GridViewColumn DisplayMemberBinding="{Binding type}" Header="Typ" Width="50"/> <GridViewColumn DisplayMemberBinding="{Binding size}" Header="Size" Width="60"/> <GridViewColumn DisplayMemberBinding="{Binding date}" Header="Date" Width="140"/> </GridView> </ListView.View> </ListView> <Button Content="Open" HorizontalAlignment="Left" Margin="33,292,0,0" VerticalAlignment="Top" Width="75"/> <Button Content="Copy" HorizontalAlignment="Left" Margin="248,292,0,0" VerticalAlignment="Top" Width="75"/> <Button Content="Move" HorizontalAlignment="Left" Margin="584,292,0,0" VerticalAlignment="Top" Width="75"/> <Button Content="Delete" HorizontalAlignment="Left" Margin="788,292,0,0" VerticalAlignment="Top" Width="75" RenderTransformOrigin="4.79,0.162"/> <ComboBox Name="Disc_1" SelectionChanged="select_path" HorizontalAlignment="Left" Margin="33,10,0,0" VerticalAlignment="Top" Width="184"/> <ComboBox Name="Disc_2" SelectionChanged="select_path" HorizontalAlignment="Left" Margin="679,10,0,0" VerticalAlignment="Top" Width="184" RenderTransformOrigin="1.605,0.713"/> </Grid>
Hi BaNaw,
This forum discuss and ask questions about the C# programming language, since your issue is more related to WPF, I will move it WPF forum for suitable support.
Thanks for your understanding.
Best regards,
Zhanglong
这篇关于从ListView获取SelectedItem的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!