[英]C# ListView in WPF, Cant see content
不久,我是網格和WPF的新手,由於某種原因,我無法在ListView中看到我的內容,並且我非常確定網格是由它引起的。
<Grid Canvas.Left="223" Canvas.Top="228">
<Grid.RowDefinitions>
<RowDefinition Height="9*"/>
<RowDefinition Height="28*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="8*"/>
<ColumnDefinition Width="21*"/>
<ColumnDefinition Width="29*"/>
<ColumnDefinition Width="29*"/>
</Grid.ColumnDefinitions>
<ListView HorizontalAlignment="Left" Height="123" VerticalAlignment="Top" Width="589" Name="LibraryList" Margin="-188,-76,-141.001,-10" IsEnabled="False" Grid.ColumnSpan="4" Grid.RowSpan="2" >
<ListView.View>
<GridView>
<GridViewColumn Header="Item Name" DisplayMemberBinding="{Binding ItemName}" Width="70"/>
<GridViewColumn Header="Copy Number" DisplayMemberBinding="{Binding CopyNumber}" Width="85"/>
<GridViewColumn Header="Guid" DisplayMemberBinding="{Binding Guid}" Width="100"/>
<GridViewColumn Header="Print Date" DisplayMemberBinding="{Binding Date}" Width="90"/>
<GridViewColumn Header="Best Seller" DisplayMemberBinding="{Binding BestSeller}" Width="90"/>
<GridViewColumn Header="Category" DisplayMemberBinding="{Binding Category}" Width="70"/>
<GridViewColumn Header="Sub Category" DisplayMemberBinding="{Binding SubCategory}" Width="80"/>
</GridView>
</ListView.View>
</ListView>
</Grid>
實現是:
ManageCtors.InitJournal(int.Parse(copyNumber.Text), itemName.Text, DateTime.Parse(TimePrinted.Text), int.Parse(Guid.Text), (JournalCategory)Enum.Parse(typeof(JournalCategory), SubCategory.Text));
//Add to ListView
string[] row = { itemName.Text, copyNumber.Text, Guid.Text , TimePrinted .Text, Category.Text , SubCategory.Text = "None" };
ListViewItem _listViewItem = new ListViewItem();
_listViewItem.Content = row;
LibraryList.Items.Add(_listViewItem.Content);
任何想法?
順便說一句:有時我會收到一條消息:輸入的格式不正確。
綁定到的數據是一個字符串數組,但是在每個GridViewColumn的中,您都是按名稱綁定的。 這可能是問題所在。
您最好將數據行建模為自己的類,並將該類的實例設置為ListViewItem.Content屬性。
public class ItemData
{
public string ItemName { get; set; }
public int CopyNumber { get; set; }
public Guid Guid { get; set; }
public DateTime Date { get; set; }
public string BestSeller { get; set; }
public string Category { get; set; }
public string Subcategory { get; set; }
}
ItemData row = new ItemData {
// set each property value
};
ListViewItem _listViewItem = new ListViewItem();
_listViewItem.Content = row;
LibraryList.Items.Add(_listViewItem.Content); // not sure if you need content here
我認為您最好在ListView上綁定ItemsSource,而不是直接在ListView Items集合上添加項目。
ObservableCollection<ItemData> items = new ObservableCollection<ItemData>();
// add your ItemData instances to the items collection
LibraryList.ItemsSource = items;
您最好還是遵循MVVM模式,該模式在StackOverflow和其他地方有很多建議可以幫助您入門。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.