从WPF ListView读取数据。 C#

时间:2015-02-25 12:38:52

标签: c# wpf listview

如何从WPF ListView中读取数据?

这是我的代码。

        <ListView x:Name="LVR"  AllowDrop="True" PreviewDrop="LVR_PreviewDrop" RenderTransformOrigin="0.505,0.506" Margin="0,0,0,0" Grid.Row="1" Grid.ColumnSpan="3" MouseEnter="LVR_MouseEnter" >
        <ListView.View>
            <GridView >
                <GridViewColumn Header="Status" Width="40">
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <Image Source="index.png" Width="26"></Image>
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
                <GridViewColumn Header="File Name">
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding TBtxt}" FontWeight="Bold"  Foreground="Blue" Cursor="Hand" Height="30" TextAlignment="Left" HorizontalAlignment="Center"></TextBlock>
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
            </GridView>
        </ListView.View>
    </ListView>

我正在将项目插入到列表视图中。

void Insert()
{
            WinForms.OpenFileDialog ofd = new WinForms.OpenFileDialog();
        ofd.Multiselect = true;
        ofd.Title = "Select .TXT File";
        ofd.FileName = "";
        ofd.Filter = "TXT | *.txt";
        if (ofd.ShowDialog() == WinForms.DialogResult.OK)
        {
            foreach (var filename in ofd.FileNames)
            {
                if (System.IO.Path.GetExtension(filename).ToUpperInvariant() == ".txt")
                {
                      LVR.Items.Add(new StackItems { TBtxt = filename });
                }
            }
        }
}
class StackItems
{
    public string TBtxt { get; set; }
    public Image imgg { get; set; }
}

完成添加文件后,我的ListView将如下所示。

|状态|文件名|

| [图像] | test.txt |

| [图像] | test1.txt的|

(对不起。我没有足够的声望发布图片)

现在我将如何阅读第二栏的“文件名”?

我是WPF的新手。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

简而言之,您应该将项目集合(每行一个)绑定到ListView.ItemsSource属性:

<ListView ItemsSource="{Binding SomeCollection}">
    <ListView.View>
        <!-- Define your view here -->
    </ListView.View>
</ListView>

如果你这样做,那么访问这些项目就像这样简单(使用Linq):

var firstItem = SomeCollection.First();

对这种情况的改进是数据将与数据绑定集合上的对象相同类型的另一个属性绑定到ListView.SelectedItem属性:

<ListView ItemsSource="{Binding SomeCollection}" SelectedItem="{Binding CurrentItem}">
    <ListView.View>
        <!-- Define your view here -->
    </ListView.View>
</ListView>

执行此操作可让您从ListView访问当前所选项目中的属性,如下所示:

int someValue = CurrentItem.SomeProperty;

请参阅MSDN上的ListView Class页面以获取进一步的帮助。