获取GridView的内容

时间:2016-09-07 14:26:17

标签: c# wpf gridview

我有一个带有包含GridView的ListView的应用程序C#/ WPF。我想获取内容以创建包含所有值的CSV文件。

我做了一些研究,但我只找到了Windows窗体或WPF DataGrid的解决方案。 GridView没什么。

我的清单:

<ListView Grid.Row="1" x:Name="myListView" 
          BorderBrush="White" HorizontalAlignment="Stretch"
          ItemsSource="{Binding Path=myItem}" SelectedItem="{Binding Path=ActualItem}">
    <ListView.View>
        <GridView x:Name="myGridView">  

            <GridViewColumn Header="{x:Static p:Resources.NAME}"
                            DisplayMemberBinding="{Binding Path=Name,Mode=OneWay,UpdateSourceTrigger=PropertyChanged}"
                            Width="{StaticResource doubleNaN}"/>

            <GridViewColumn Header="{x:Static p:Resources.LABEL}"
                            DisplayMemberBinding="{Binding Path=Label,Mode=OneWay,UpdateSourceTrigger=PropertyChanged}"/>

        </GridView>
    </ListView.View>
</ListView>

我可以获得标题但没有内容:

System.Text.StringBuilder csv = new System.Text.StringBuilder();                        
String separator = System.Globalization.CultureInfo.CurrentCulture.TextInfo.ListSeparator;

foreach (System.Windows.Controls.GridViewColumn col in myGridView.Columns)
{
    string header = col.Header as String;
    if (!String.IsNullOrWhiteSpace(header))
    {
        csv.Append(header + separator);
    }
}
csv.AppendLine();

System.IO.File.WriteAllText(path, csv.ToString());

如何获取制作CSV文件的内容?

1 个答案:

答案 0 :(得分:0)

我找到了一个解决方案,可能不是最好的但是有效。

问题是:

  • 从GridView获取标头,因为标头取决于语言

  • 仅获取显示的列

GridView中的项目是tyep choice /t 60 /C Y /d Y /n,列包含属性。我创建了一个循环,以便从MyItem获取绑定的标题和属性。第二个循环从GridView

中的对象属性获取值
ListView