Windows Vista Forums
Vista Forums Home Join Vista Forums Windows 7 Forum Vista Tutorials Tags
Welcome to Windows Vista Forums. Our forum is dedicated to helping you find solutions with any problems, errors or issues you are experiencing with Windows Vista. The Vista forum also covers news and updates and has an extensive Windows Vista tutorial section that covers a wide range of tips and tricks.

Go Back   Vista Forums > Misc Newsgroups > .NET General

Vista Tutorial - wpf xml twoway data binding problem?

Reply
 
Old 06-17-2009   #1 (permalink)
dave
Guest


 
 

wpf xml twoway data binding problem?

I am trying to link to some simple xml data in a local file...

<dataroot xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<DisplayName>Line Rate</DisplayName>
<Location>Line test change</Location>
</dataroot>


I have tried a couple ways, but right now have this in the xaml:

<Window.Resources>
<XmlDataProvider x:Key="datarootDS" Source="C:\demo\test.xml"
d:IsDataSource="True"/>
</Window.Resources>
<Window.DataContext>
<Binding Mode="TwoWay" Source="{StaticResource datarootDS}"
XPath="/dataroot" />
</Window.DataContext>

then the control looks like:
<TextBox Margin="0,0,0,0" Grid.Column="1" Text="{Binding Mode=TwoWay,
UpdateSourceTrigger=LostFocus, XPath=/dataroot/Location}" TextWrapping="Wrap"
HorizontalAlignment="Stretch" TextChanged="OnTextBoxChanged"/>

I get data from the xml to the control just fine on startup, but it doesn't
save changes from the control back to the xml file. am i missing something
in the link back to the xml file? i have also tried the explicit trigger
and manually calling the updatesource function but it still doesn't get
written back to the file.

My System SpecsSystem Spec
Old 06-22-2009   #2 (permalink)
Linda Liu[MSFT]
Guest


 
 

RE: wpf xml twoway data binding problem?

Hi Dave,

When using the TwoWay binding mode, data binding does update the data in
the XmlDataProvider if the bound TextBox's text is changed. But data
binding doesn't save the changes back to the local xml file.

To save changes back to the local xml file, you can get the XmlDocument
object representing the xml file and call the Save method to save the
changes to the xml file. You can do this work in the TextChanged event
handler of the TextBox. For example:

private void textBox1_TextChanged(object sender, TextChangedEventArgs e)
{
XmlDataProvider provider =
(XmlDataProvider)this.FindResource("datarootDS");
provider.Document.Save(@"C:\demo\test.xml");
}

Hope this helps.
If you have any question, please feel free to let me know.

Sincerely,
Linda Liu
Microsoft Online Community Support

Delighting our customers is our #1 priority. We welcome your comments and
suggestions about how we can improve the support we provide to you. Please
feel free to let my manager know what you think of the level of service
provided. You can send feedback directly to my manager at:
msdnmg@xxxxxx.

==================================================
Get notification to my posts through email? Please refer to
http://msdn.microsoft.com/subscripti...ult.aspx#notif
ications.

Note: The MSDN Managed Newsgroup support offering is for non-urgent issues
where an initial response from the community or a Microsoft Support
Engineer within 1 business day is acceptable. Please note that each follow
up response may take approximately 2 business days as the support
professional working with you may need further investigation to reach the
most efficient resolution. The offering is not appropriate for situations
that require urgent, real-time or phone-based interactions or complex
project analysis and dump analysis issues. Issues of this nature are best
handled working with a dedicated Microsoft Support Engineer by contacting
Microsoft Customer Support Services (CSS) at
http://msdn.microsoft.com/subscripti...t/default.aspx.
==================================================
This posting is provided "AS IS" with no warranties, and confers no rights.


My System SpecsSystem Spec
Old 06-22-2009   #3 (permalink)
dave
Guest


 
 

RE: wpf xml twoway data binding problem?



"Linda Liu[MSFT]" wrote:
Quote:

> Hi Dave,
>
> When using the TwoWay binding mode, data binding does update the data in
> the XmlDataProvider if the bound TextBox's text is changed. But data
> binding doesn't save the changes back to the local xml file.
>
> To save changes back to the local xml file, you can get the XmlDocument
> object representing the xml file and call the Save method to save the
> changes to the xml file. You can do this work in the TextChanged event
> handler of the TextBox. For example:
>
> private void textBox1_TextChanged(object sender, TextChangedEventArgs e)
> {
> XmlDataProvider provider =
> (XmlDataProvider)this.FindResource("datarootDS");
> provider.Document.Save(@"C:\demo\test.xml");
> }
>
> Hope this helps.
> If you have any question, please feel free to let me know.
>
> Sincerely,
> Linda Liu
> Microsoft Online Community Support
>
Yes, that makes sense and is what I finally determined had to be the case.
It would be good if the help said something like this and if there was an
example that pointed out the use of the xml document as part of the
databinding. When doing data binding with expression blend it 'looks' like
you are binding directly to the xml file. I did finally change the binding
to use the xml to linq xelement as a data source and manually read and saved
the file when I wanted to from code.
My System SpecsSystem Spec
Reply

Thread Tools



Vista Forums is an independent web site and has not been authorized,
sponsored, or otherwise approved by Microsoft Corporation.
"Windows Vista", the Start Orb, and related materials are trademarks of Microsoft Corp.
© Designer Media Ltd

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46