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發明很大的一個典型的反模式,以引導您遠離。我很想賭這個代碼在事件處理程序中。 –