WPF和C# - Gridview行选择和XML数据源 - 如何建立连接?

时间:2009-11-02 06:34:43

标签: wpf xml gridview

我有一个像这样定义的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数据源中选择相应的记录,以便我可以操作正确/选择的数据?

谢谢, 将

1 个答案:

答案 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。