1. Вы не можете получить доступ к сетке по имени, так как существует несколько динамических сеток и не может быть несколько полей с одинаковым именем (конечно, это не поможет, если это возможно).
2. Вы не можете изменить Items
, пока ItemsSource
связан, но вы можете изменить ItemsSource
, вот пример того, как это сделать:
<TabControl Name="_tabControl">
<TabControl.Resources>
<XmlDataProvider x:Key="data" XPath="GPA/Semestre"
Source="http://pastebin.com/raw.php?i=JgyYkn4E" />
</TabControl.Resources>
<!-- ... -->
<TabControl.ContentTemplate>
<DataTemplate>
<StackPanel>
<DataGrid Name="localDG" ItemsSource="{Binding XPath=Cadeiras/Cadeira}"
AutoGenerateColumns="False" Tag="{Binding XPath=Cadeiras}">
<DataGrid.Columns>
<!-- ... -->
</DataGrid.Columns>
</DataGrid>
<Button Content="Add Row" Click="AddRow_Click" Tag="{x:Reference localDG}" />
</StackPanel>
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
private void AddRow_Click(object sender, RoutedEventArgs e)
{
var data = _tabControl.Resources["data"] as XmlDataProvider;
var dg = (sender as FrameworkElement).Tag as DataGrid; //Reference to DataGrid is stored in the Button.Tag
var cadeiras = dg.Tag as XmlNode; //Used DataGrid.Tag to store parent node of cadeiras so a new cadeira can be added
var newItem = data.Document.CreateElement("Cadeira");
Action<string,string> addProperty = (name, val) =>
{
var prop = data.Document.CreateElement(name);
prop.InnerText = val;
newItem.AppendChild(prop);
};
addProperty("Activa","1");
addProperty("Nome","Lorem Ipsum");
addProperty("Nota","1.3");
cadeiras.AppendChild(newItem);
}
3. Используя методы, аналогичные описанным в 2., вы можете запросить элементы для этого свойства (например, с помощью LINQ)
С другой стороны: если есть вероятность, что вы будете выполнять немного больше манипуляций, чем эта, я бы порекомендовал десериализовать XML для соответствующих объектов CLR. Манипуляции с объектной моделью документа - это боль только с точки зрения дополнительных строк кода, они ни в коей мере не являются безопасными, не имеют формы или формы, и их нужно поддерживать.