0
我有一个包含GridView的ListView的应用程序C#/ WPF。我想让内容创建一个包含所有值的CSV文件。获取GridView的内容
我做了一些研究,但我只找到窗体或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文件?
你填充的东西叫做'myItem' ListView控件从对象的属性值。只需重复一遍即可。这就是内容所在的地方。另外,如果您想将内容添加到文件中,则必须编写这样的代码。您现在添加的是列标题。 –
我可以得到'myItem'列表,但'GridView'不显示所有的属性。如果'myItem'中的所有元素都为null或空'NAME',我的'GridViewColumn'不显示(width = 0),用户也可以将宽度设置为0.为什么我想从'GridView'中获取值,得到只显示的值 –
所以有一些你需要重现的微不足道的逻辑。所以重现它。 GridView的目的不是为CSV文件格式化值。试图以这种方式使用它是糟糕的设计。具体来说,用业务逻辑纠缠UI控件是WPF和MVVM发明很大的一个典型的反模式,以引导您远离。我很想赌这个代码在事件处理程序中。 –