Tôi đang cố gắng nắm bắt được WPF, cụ thể hơn là thực hiện liên kết hai chiều của tệp xml. Tôi có nên sử dụng XMLDataProvider hoặc là tùy chọn khác (tốt hơn) của họ không? Dữ liệu hiển thị tốt nhưng khi tôi thay đổi mục nhập, các thay đổi không được phản ánh trong tệp xml.WPF liên kết hai chiều XML
XML:
<?xml version="1.0" encoding="utf-8" ?>
<Licence>
<Market>
<Name>DAX</Name>
<Begin>01/01/2010</Begin>
<End>01/04/2010</End>
</Market>
<Market>
<Name>DJI</Name>
<Begin>01/07/2010</Begin>
<End>01/10/2010</End>
</Market>
</Licence>
Các XAML:
<Window x:Class="WpfApplication5.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<DataTemplate x:Key="LicenceTemplate">
<Label Content="{Binding XPath=Name}"/>
</DataTemplate>
</Window.Resources>
<Grid>
<Grid.DataContext>
<XmlDataProvider x:Name="XMLData" Source="XMLFile1.xml" XPath="Licence/Market"/>
</Grid.DataContext>
<StackPanel>
<DataGrid x:Name="DataGridLic" ItemsSource="{Binding}" AutoGenerateColumns="False" Height="200" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" Width="300" CellEditEnding="DataGridLic_CellEditEnding">
<DataGrid.Columns>
<DataGridTextColumn x:Name="nameColumn" Binding="{Binding XPath=Name, Mode=TwoWay}" Header="Name" Width="100" Foreground="#FFC28383" />
<DataGridTextColumn x:Name="BegColumn" Binding="{Binding XPath=Begin, Mode=TwoWay}" Header="Begin" Width="100" Foreground="#FFC14040" />
<DataGridTextColumn x:Name="EndColumn" Binding="{Binding XPath=End, Mode=TwoWay}" Header="End" Width="100" Foreground="#FFC14040" />
</DataGrid.Columns>
</DataGrid>
</StackPanel>
</Grid>
codebehind:
public MainWindow()
{
InitializeComponent();
}
private void DataGridLic_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
{
XMLData.Document.Save("XMLFile1.xml");
}
UPDATE: Một số tài nguyên hữu ích cho xml da tabinding:
http://msdn.microsoft.com/en-us/library/bb669141.aspx
http://msdn.microsoft.com/en-us/library/cc165615.aspx