0

我正在开发 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 设置后,此数据未显示在列表视图中。现在它只显示网格线。任何建议/帮助都是可观的。

问候拉维

4

1 回答 1

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 任何地方,例如浏览按钮单击或加载。

于 2013-02-05T07:04:11.387 回答