从ListView获取SelectedItem [英] Get SelectedItem from ListView

查看:64
本文介绍了从ListView获取SelectedItem的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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}"的Horizo​​ntalAlignment = 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"的Horizo​​ntalAlignment = 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"的Horizo​​ntalAlignment = QUOT;左"余量= QUOT; 33,292,0,0" VerticalAlignment = QUOT;陀螺"宽度= QUOT; 75" />
< Button Content ="复制"的Horizo​​ntalAlignment = QUOT;左"余量= QUOT; 248,292,0,0" VerticalAlignment = QUOT;陀螺"宽度= QUOT; 75" />
< Button Content =" Move"的Horizo​​ntalAlignment = QUOT;左"余量= QUOT; 584,292,0,0" VerticalAlignment = QUOT;陀螺"宽度= QUOT; 75" />
< Button Content ="删除"的Horizo​​ntalAlignment = QUOT;左"余量= QUOT; 788,292,0,0" VerticalAlignment = QUOT;陀螺"宽度= QUOT; 75" RenderTransformOrigin = QUOT; 4.79,0.162" />
< ComboBox Name =" Disc_1"的SelectionChanged = QUOT; select_path"的Horizo​​ntalAlignment = QUOT;左"余量= QUOT; 33,10,0,0" VerticalAlignment = QUOT;陀螺"宽度= QUOT; 184" />
< ComboBox Name =" Disc_2"的SelectionChanged = QUOT; select_path"的Horizo​​ntalAlignment = 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆