Не могу автоматически обновить данные из xml файла в DataGrid WPF
После сохранения данных в xml DataGrid не обновляется. Подскажите, как автоматически обновить DataGrid.
Код xaml:
<Window x:Class="TestWPF.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:TestWPF"
mc:Ignorable="d"
Title="MainWindow" Height="600" Width="750" Name ="Window" >
<Grid Margin="-16,-34,-8,-96">
<TextBox x:Name="Tbx_Email" HorizontalAlignment="Left" Height="25" Margin="100,50,0,0" TextWrapping="Wrap" Text="E-mail" VerticalAlignment="Top" Width="250" AutomationProperties.Name="Email"/>
<TextBox x:Name="Tbx_Position" HorizontalAlignment="Left" Height="25" Margin="100,80,0,0" TextWrapping="Wrap" Text="Position" VerticalAlignment="Top" Width="250" AutomationProperties.Name="Email"/>
<TextBox x:Name="Tbx_Company_Name" HorizontalAlignment="Left" Height="25" Margin="500,50,0,0" TextWrapping="Wrap" Text="Company Name" VerticalAlignment="Top" Width="250" AutomationProperties.Name="Email"/>
<TextBox x:Name="Tbx_Address" HorizontalAlignment="Left" Height="25" Margin="500,80,0,0" TextWrapping="Wrap" Text="Address " VerticalAlignment="Top" Width="250" AutomationProperties.Name="Email"/>
<TextBox x:Name="Tbx_PLZOrt" HorizontalAlignment="Left" Height="25" Margin="500,110,0,0" TextWrapping="Wrap" Text="PLZ Ort" VerticalAlignment="Top" Width="250" AutomationProperties.Name="Email"/>
<TextBox x:Name="Tbx_Person" HorizontalAlignment="Left" Height="25" Margin="500,140,0,0" TextWrapping="Wrap" Text="Person" VerticalAlignment="Top" Width="250" AutomationProperties.Name="Email" MouseDoubleClick="Tbx_Person_MouseDoubleClick"/>
<Label x:Name ="Lbl_Email" Content="E-mail" HorizontalAlignment="Left" Height="25" Margin="20,50,0,0" VerticalAlignment="Top" Width="75"/>
<Label x:Name ="Lbl_Position" Content="Position" HorizontalAlignment="Left" Height="25" Margin="20,80,0,0" VerticalAlignment="Top" Width="75"/>
<Label x:Name ="Lbl_CompanyName" Content="Company Name" HorizontalAlignment="Left" Height="25" Margin="375,50,0,0" VerticalAlignment="Top" Width="100"/>
<Label x:Name ="Lbl_Address" Content="Address" HorizontalAlignment="Left" Height="25" Margin="375,80,0,0" VerticalAlignment="Top" Width="100"/>
<Label x:Name ="Lbl_PLZOrt" Content="PLZ Ort" HorizontalAlignment="Left" Height="25" Margin="375,110,0,0" VerticalAlignment="Top" Width="100"/>
<Label x:Name ="Lbl_Person" Content="Person" HorizontalAlignment="Left" Height="25" Margin="375,140,0,0" VerticalAlignment="Top" Width="50"/>
<Button x:Name ="BtnSE" HorizontalAlignment="Left" Height="40" Margin="25,110,0,0" VerticalAlignment="Top" Width="85" Click="BtnSE_Click">
<TextBlock x:Name="BtnSECaption" Text="Send Email" TextWrapping="Wrap" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="8"/>
</Button>
<Button x:Name ="BtnCB" HorizontalAlignment="Left" Height="40" Margin="145,110,0,0" VerticalAlignment="Top" Width="85" Click="BtnCB_Click">
<TextBlock x:Name="BtnCBCaption" Text="Create Bewerbung Anschrieben" TextWrapping="Wrap" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="8"/>
</Button>
<Button x:Name ="BtnFC" HorizontalAlignment="Left" Height="40" Margin="265,110,0,0" VerticalAlignment="Top" Width="85" Click="BtnFC_Click">
<TextBlock x:Name="BtnFCCaption" Text="Form Clear" TextWrapping="Wrap" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="8"/>
</Button>
<TextBlock x:Name="Tbl_Message" HorizontalAlignment="Left" Height="175" Margin="25,200,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="725" ScrollViewer.VerticalScrollBarVisibility="Auto" >
<TextBlock Text="Sehr"/> <TextBlock Text="{Binding Isman, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"/>
<TextBlock Text="{Binding ElementName=Tbx_Person, Path=Text, UpdateSourceTrigger=PropertyChanged}"/>
<TextBlock Text=","/><LineBreak/>
<TextBlock Text="anbei erhalten Sie meine Bewerbung für die von Ihnen ausgeschriebene Stelle als "/>
<TextBlock Text="{Binding ElementName=Tbx_Position, Path=Text, UpdateSourceTrigger=PropertyChanged}"/><TextBlock Text=" ."/><LineBreak/>
<TextBlock Text="Warum ich genau der richtige Kandidat für diese Stelle bin und warum ich Sie mit meiner langjährigen Berufserfahrung optimal unterstützen kann, entnehmen Sie bitte meinen ausführlichen Bewerbungsunterlagen." TextWrapping="Wrap"/><LineBreak/>
<TextBlock Text="Ich freue mich darauf, Sie in einem persönlichen Vorstellungsgespräch kennenzulernen." TextWrapping="Wrap"/><LineBreak/>
<TextBlock Text="Mit freundlichen Grussen," TextWrapping="Wrap"/><LineBreak/>
<TextBlock Text="Andrei Filatov" TextWrapping="Wrap"/><LineBreak/><LineBreak/>
<TextBlock Text="E-mail: [email protected]" TextWrapping="Wrap"/><LineBreak/>
<TextBlock Text="Tel: +41-76-273-43-39" TextWrapping="Wrap"/><LineBreak/>
</TextBlock>
<DataGrid x:Name="Dgr_Archive" HorizontalAlignment="Left" Height="215" Margin="25,375,0,0" VerticalAlignment="Top" Width="725"
ItemsSource="{Binding}" AutoGenerateColumns="False" >
<DataGrid.DataContext>
<XmlDataProvider Source="C:\Users\1\source\repos\TestWPF\TestWPF\Archive.xml" XPath="/Companies/Company" />
</DataGrid.DataContext>
<DataGrid.Columns >
<DataGridTextColumn Width="25" Header="Position" Binding="{Binding XPath=@id}"/>
<DataGridTextColumn Width="116" Header="Position" Binding="{Binding XPath=@name}"/>
<DataGridTextColumn Width="116" Header="Position" Binding="{Binding XPath=Position}"/>
<DataGridTextColumn Width="116" Header="Address" Binding="{Binding XPath=Address}"/>
<DataGridTextColumn Width="116" Header="E-mail" Binding="{Binding XPath=E_mail}"/>
<DataGridTextColumn Width="116" Header="Contact Person" Binding="{Binding XPath=Contact_person}"/>
<DataGridTextColumn Width="117" Header="Record_Timestamp" Binding="{Binding XPath=Record_Timestamp}"/>
</DataGrid.Columns>
</DataGrid>
<CheckBox x:Name="Chb_IM" Content="IsMan" HorizontalAlignment="Left" Margin="425,145,0,0" VerticalAlignment="Top" Checked="Chb_IM_Checked" Unchecked="Chb_IM_Unchecked"/>
</Grid>
</Window>
Код C#
private void Add_record(XDocument doc)
{
XElement n = doc.Root.LastNode as XElement;
Int32.TryParse(n.Attribute("id").Value, out int LastElementID);
doc.Root.Add(new XElement("Company",
new XElement("Position", Tbx_Position.Text),
new XElement("Address", Tbx_Address.Text + " " + Tbx_PLZOrt.Text),
new XElement("E_mail", Tbx_Email.Text),
new XElement("Contact_person", Tbx_Person.Text),
new XElement("Record_Timestamp", DateTime.Now.ToString()),
new XAttribute("name", Tbx_Company_Name.Text.Replace(" ", "_")),
new XAttribute("id", (LastElementID + 1))));
doc.Save(archpath);
}