在WPF Listview中显示数据

时间:2013-02-05 06:17:50

标签: c# wpf listview

我正在开发wpf应用程序,其中我有listview控件。我对wpf很新。但设法添加一些样式并在Listview中显示水平网格线,如下所示,

 <DataTemplate x:Key="IDBorderedCellTemplate">

                <Border BorderBrush="Black" Margin="0,5,0,1"

                BorderThickness="0,0,0,1" >

                    <TextBlock Foreground="MediumBlue" FontFamily="Calibri" Margin="3,0,0,2" Text=""
                />

                </Border>
            </DataTemplate>


 <ListView.View>

                <GridView ColumnHeaderContainerStyle="{StaticResource myHeaderStyle}">

                    <!-- Product ID -->

                    <GridViewColumn



          CellTemplate="{StaticResource IDBorderedCellTemplate}">

现在我的问题是我可以在加载窗口时在列表视图中显示项目,这只显示网格线。根据我的要求,我有一个浏览文件的浏览按钮,这些浏览的文件必须显示在列表视图中。

在加载事件中,我正在添加以下代码行,

    try
    {

        listviewitem = new ListViewItem();
        //displays only the filename in the listview
        listviewitem.Content = System.IO.Path.GetFileName(_name);
        _listFiles.Items.Add(listviewitem);
    }
    catch (Exception)
    {
   }

在xaml中添加gridview设置后,此数据未显示在列表视图中。现在它只显示网格线。 任何建议/帮助都很明显。

此致 拉维

1 个答案:

答案 0 :(得分:0)

选择listview的ItemsSource作为ObservableCollection或BindingList      用于动态/频繁更改数据而不是使用listviewItem。

XAML

  <ListView  Name="listView1" ItemsSource="{Binding FileStore}">
    <ListView.View>
        <GridView>
            <GridViewColumn Width="120" Header="Files" DisplayMemberBinding="{Binding}" />
        </GridView>
    </ListView.View>
 </ListView>

C#

 public partial class MainWindow : Window
 {
   public ObservableCollection<string> fileList= new ObservableCollection<string>();

    public MainWindow()
    {
       InitializeComponent();
        this.DataContext = this;
       // Add files to fileList (ObservableCollection)  
    }

    public ObservableCollection<string> FileStore
   {
      get { return fileList; }
   } 
  }

可以在任何地方向ObservableCollection添加项目,例如浏览按钮单击或加载。