c# - 从 WPF ListView 读取数据。 C#

标签 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>

我正在像这样将项目插入 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 将如下所示。

|状态|文件名|

|[图片]|测试.txt |

|[图片]| test1.txt|

(抱歉。我没有足够的声誉来发布图片)

现在如何从第二列读取“文件名”?

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

最佳答案

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

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

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

var firstItem = SomeCollection.First();

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

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

这样做将使您能够像这样从 ListView 访问当前所选项目的属性:

int someValue = CurrentItem.SomeProperty;

请引用ListView Class MSDN 上的页面以获取更多帮助。

关于c# - 从 WPF ListView 读取数据。 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28719256/

相关文章:

c# - 在整个序列中最均匀地分布字母表中的字母

c# - 无法将结构的 Marshal 指针转换回结构

c# - 为什么我的 TreeView 仅显示一层深度?

c# - 在 ListView 中显示和编辑各种项目类型

c# - 在 C# 中创建不可变类的最简洁方法是什么?

c# - 用户界面在复制大量文件期间不响应

c# - 如何在 LayoutAnchorable AvalonDock 2 中放置窗口实例

c# - 在 C# 中使用图片代替矩形

listview - 按项目和分隔线过滤 ListView

android - 使 ListView 可点击 React Native