2011-08-26 64 views
0

我试着去显示一个列表框的文件的名称和路径。例如,名称应该在FilePath下的Header FileName和路径下。我不希望绑定到任何个XML,因为我有一个代码,以显示文件名和size.Im新本和林不知道如何去了解这一点。谢谢!显示从列表中的项目到列在GridView控件

+0

@fatty一切我见过迄今已绑定。我不知道如何开始也:( – puzzled

+0

你可以给我们一段代码,你试图将数据绑定到gridview,还有你绑定的数据中的对象的结构? – VARAK

回答

0

我不知道怎么帮你没有看到任何你,你正试图将数据绑定代码或结构的,但我给它一个镜头。

比方说,你要的文件名和路径绑定在C:\ MyFolder文件目录和您的网格视图有一个名字grd_MyGrid:

string[] myFiles = Directory.GetFiles("C:\\MyFolder\\"); 

var files = from f in myFiles 
         select new{ 
            FileName =Path.GetFileName(f), 
            FilePath = Path.GetPathRoot(f) 
            }; 

grd_MyGrid.DataSource=files; 

为了这个工作,你必须参考System.Linq。

希望这会有所帮助。

0

要开始为您送行,我将提供一些代码,但你真的应该至少对一些基本的读了,当谈到XAML和WPF为今后的发展任务。

如果你可以不使用列表框,我会建议使用DataGrid(在.net 4.0 - 或在WPF Toolkit on CodePlex)。 DataGrid更容易在要显示网格或报表中的数据的情况下使用。

要在XAML创建DataGrid,则可以使用下面的代码(在.NET 4)

<DataGrid HorizontalScrollBarVisibility="Auto" ItemsSource="{Binding Path=ItemsToDisplay}" IsReadOnly="True" AutoGenerateColumns="True" /> 

这将创建一个简单DataGrid对象为你在屏幕上显示。由于AutoGenerateColumns已设置为true,你的列将是你在控制自动创建。

您也可能会注意到,我已经设置了ItemsSource属性,这是DataGrid中会得到它的项目从属性。

要在页面代码隐藏文件定义了这一点,你就可以做这样的事情:

public System.Collections.ObjectModel.ObservableCollection<Item> ItemsToDisplay { get; private set; }

请注意,在代码隐藏属性的名称是如何的名称相匹配DataGrid上绑定的属性。这就是视图(页面文件)链接到ViewModel(代码隐藏)的方式

要测试它,请创建一个简单的测试类并使用项填充ItemsToDisplay集合。

例如:

在我MainWindow.xaml.cs文件

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
     DataContext = this; 
     ItemsToDisplay = new System.Collections.ObjectModel.ObservableCollection<Item>(); 

     ItemsToDisplay.Add(new Item("Homer", 45)); 
     ItemsToDisplay.Add(new Item("Marge", 42)); 
     ItemsToDisplay.Add(new Item("Bart", 10)); 
     ItemsToDisplay.Add(new Item("Lisa", 8)); 
     ItemsToDisplay.Add(new Item("Maggie", 2)); 
    } 

    public System.Collections.ObjectModel.ObservableCollection<Item> ItemsToDisplay { get; private set; } 
} 

public class Item 
{ 
    public string Name { get; private set; } 
    public int Age { get; private set; } 

    public Item(string name, int age) 
    { 
     Name = name; 
     Age = age; 
    } 
} 

在我的主窗口。XAML文件:

<Window x:Class="Stackoverflow.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525"> 
    <Grid> 
     <DataGrid HorizontalScrollBarVisibility="Auto" ItemsSource="{Binding Path=ItemsToDisplay}" AutoGenerateColumns="True" IsReadOnly="True" /> 
    </Grid> 
</Window> 

它看起来像:

enter image description here

相关问题