WPF и C # - выбор строки Gridview и источник данных XML - как установить соединение? - PullRequest
1 голос
/ 02 ноября 2009

У меня 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>

и я заполняю GridView источником данных XML, подобным этому

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 Ответ

1 голос
/ 02 ноября 2009

Я бы не заполнил просмотр списка жестко, как вы это сделали. Обычно вы привязываете ListView к источнику данных (xml) и позволяете привязке данных WPF автоматически обновлять данные XML. Для этого вы можете создать DataSet из вашего XML и затем связать его с помощью ListView.ItemsSource. Затем вы должны создать DataTemplate, чтобы определить визуальное представление записи в вашем XML. Это могут быть элементы управления вводом, которые позволят вам непосредственно редактировать запись в вашем списке. Если вы предпочитаете представление в стиле master-detail, вы бы привязали подробное представление к текущему элементу вашего списка (например, UserControl.DataContext = {Binding CurrentItem, ElementName = myListView}). Остальное будет обработано WPF.

ОБНОВЛЕНИЕ: Вот пример , как вы можете напрямую привязать свой XDocument, так что вам не обязательно использовать DataSets.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...