Dav*_*ave 12 c# wpf listview selecteditem
好吧,我的C#WPF ListView控件存在更多问题.这里充满了荣耀:
<Window x:Class="ebook.SearchResults" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Title="ISBNListView" Height="503" Width="1004">
<Grid>
<ListView Name="listView1" Margin"22,30,33,28" MouseDoubleClick="getSelectedItem" >
<ListView.View>
<GridView>
<GridView.Columns>
<GridViewColumn Header="ISBN" Width="150" DisplayMemberBinding="{Binding ISBN}"/>
<GridViewColumn Header="Title" Width="350" DisplayMemberBinding="{Binding Title}"/>
<GridViewColumn Header="Author" Width="350" DisplayMemberBinding="{Binding Author}" />
</GridView.Columns>
</GridView>
</ListView.View>
</ListView>
</Grid>
Run Code Online (Sandbox Code Playgroud)
我用以下内容填充listView:
XDocument xdoc = XDocument.Load(GlobalVars.docPath + "\\tempSearchResults.xml");
var items = from item in xdoc.Descendants("Book")
select new
{
ISBN = item.Element("ISBN").Value,
Title = item.Element("Title").Value,
AuthTexts = item.Element("Author").Value
};
foreach (var item in items)
{
listView1.Items.Add(new { ISBN = item.ISBN, Title = item.Title, Author = item.AuthTexts });
}
Run Code Online (Sandbox Code Playgroud)
当双击时,我有一次从一行中检索数据的魔鬼.DoubleClick会弹出一个包含行中所有数据的消息框,我似乎无法只获取一个子项或单元格的数据.说一行有ISBN:1234567标题:Hurrr作者:Waldo,我如何只检索ISBN或只是标题?
private void getSelectedItem(object sender, MouseButtonEventArgs e)
{
System.Windows.MessageBox.Show(listView1.SelectedItems[0].ToString());
}
Run Code Online (Sandbox Code Playgroud)
对C#和.Net来说仍然是新手,并且我的头靠在墙上.我认为这应该很简单.
dtb*_*dtb 30
listView1.SelectedItems[0]返回一个object.首先需要将其强制转换为特定类型,然后才能访问其成员.对于转换,您需要知道要转换为的类的名称,但是您要向ListView 添加匿名类(=没有名称)的实例.
解决方案:Book使用ISBN,标题和作者属性定义一个类(例如),Book并向ListView 添加实例.然后你可以做必要的演员:
private void getSelectedItem(object sender, MouseButtonEventArgs e)
{
Book book = (Book)listView1.SelectedItems[0];
System.Windows.MessageBox.Show(book.ISBN);
}
Run Code Online (Sandbox Code Playgroud)
不要忘记将实例添加Book到ListView而不是匿名类型的实例:
var items = from item in xdoc.Descendants("Book")
select new Book // <---
{
ISBN = (string)item.Element("ISBN"),
Title = (string)item.Element("Title"),
Author = (string)item.Element("Author"),
};
foreach (var item in items)
{
listView1.Items.Add(item);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
45323 次 |
| 最近记录: |