我有一个像这样定义的GridView: -
< ListView Name="chartListView" SelectionChanged="chartListView_SelectionChanged">
< ListView.View>
< GridView>
< GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}" Width="250"/>
< GridViewColumn Header="Type" DisplayMemberBinding="{Binding Type}" Width="60"/>
< GridViewColumn Header="Default Font" DisplayMemberBinding="{Binding defaultFontName}" Width="100"/>
< GridViewColumn Header="Size" DisplayMemberBinding="{Binding defaultFontSize}" Width="40"/>
< GridViewColumn Header="ID" DisplayMemberBinding="{Binding ID}" Width="100"/>
</GridView>
</ListView.View>
</ListView>
我用这样的XML数据源填充GridView
XDocument xml = XDocument.Load(@"D:\devel\VS\pchart\charts.xml");
var query = from p in xml.Elements("charts").Elements("chart")
select p;
foreach (var record in query)
{
chartListView.Items.Add(new { Name = record.Attribute("Name").Value, Type = record.Attribute("Type").Value, defaultFontName = record.Attribute("defaultFontName").Value, defaultFontSize = record.Attribute("defaultFontSize").Value, ID = record.Attribute("ID").Value });
}
我的问题是,当用户点击GridView中的某一行并触发函数chartListView_SelectionChanged时,如何在我的XML数据源中选择相应的记录,以便我可以操作正确/选择的数据?
谢谢, 将
答案 0 :(得分:1)
我不会像你那样用硬编码填写listview。您通常要做的是将ListView绑定到数据源(xml),让WPF数据绑定自动处理XML数据的更新。为此,您可以创建DataSet from your XML,然后使用ListView.ItemsSource绑定它。然后,您将创建一个DataTemplate来定义xml中记录的可视化表示。这可以是输入控件,允许您直接编辑列表视图中的记录。如果您更喜欢主 - 细节样式视图,则可以将详细信息视图添加到列表视图的当前项(例如,UserControl.DataContext = {Binding CurrentItem,ElementName = myListView})。其余的将由WPF处理。
更新:Here is an example你怎么可以直接绑定到你的XDocument,所以你不一定要使用DataSet。