Get XmlElement from Bounded view : XmlDataProvider « Windows Presentation Foundation « C# / C Sharp






Get XmlElement from Bounded view

Get XmlElement from Bounded view
  
<Window x:Class="WpfApplication1.Window1"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:local="clr-namespace:WpfApplication1"
  Title="XmlBinding" Height="325" Width="400">
  <Window.Resources>
    <local:AgeToForegroundConverter x:Key="ageConverter" />
  </Window.Resources>
  <StackPanel Name="stackPanel">
    <ListBox ItemsSource="{Binding}" IsSynchronizedWithCurrentItem="True">
      <ListBox.GroupStyle>
        <x:Static Member="GroupStyle.Default" />
      </ListBox.GroupStyle>
      <ListBox.ItemTemplate>
        <DataTemplate>
          <TextBlock>
            <TextBlock Text="{Binding XPath=@Name}" />
            (age: <TextBlock Text="{Binding XPath=@Age}" Foreground="{Binding XPath=@Age, Converter={StaticResource ageConverter}}" />)
          </TextBlock>
        </DataTemplate>
      </ListBox.ItemTemplate>
    </ListBox>
    <TextBlock>Name:</TextBlock>
    <TextBox Text="{Binding XPath=@Name}" />
    <TextBlock>Age:</TextBlock>
    <TextBox Text="{Binding XPath=@Age}" Foreground="{Binding XPath=@Age, Converter={StaticResource ageConverter}}" />
    <Button Name="birthdayButton">Birthday</Button>
  </StackPanel>
</Window>
//File:Window.xaml.cs
using System;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Collections.Generic;
using System.Diagnostics;
using System.Collections;
using System.Data;
using System.Data.OleDb;
using System.ComponentModel;
using System.Xml;

namespace WpfApplication1
{
    public class AgeToForegroundConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            Debug.Assert(targetType == typeof(Brush));
            int age = int.Parse(value.ToString());
            return (age > 60 ? Brushes.Red : Brushes.Black);
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }


    public partial class Window1 : Window
    {
        XmlDocument doc;
        public Window1()
        {
            InitializeComponent();

            doc = new XmlDocument();
            doc.LoadXml(@"<Company xmlns='http://company.com'>
  <Employee Name='A' Age='61' />
  <Employee Name='B' Age='72' />
  <Employee Name='C' Age='38' />
</Company>");

            XmlNamespaceManager manager = new XmlNamespaceManager(doc.NameTable);
            manager.AddNamespace("sb", "http://company.com");
            Binding.SetXmlNamespaceManager(stackPanel, manager);

            Binding b = new Binding();
            b.XPath = "/sb:Company/sb:Employee";
            b.Source = doc;
            stackPanel.SetBinding(StackPanel.DataContextProperty, b);

            this.birthdayButton.Click += birthdayButton_Click;

        }

        void birthdayButton_Click(object sender, RoutedEventArgs e) {
      ICollectionView view = CollectionViewSource.GetDefaultView(stackPanel.DataContext);

      XmlElement person = (XmlElement)view.CurrentItem;
      person.SetAttribute("Age",(int.Parse(person.Attributes["Age"].Value) + 1).ToString());
      Console.WriteLine(person.Attributes["Name"].Value);
      Console.WriteLine(person.Attributes["Age"].Value);
    }
    }
}

   
    
  








Related examples in the same category

1.HierarchicalDataTemplate and XmlDataProviderHierarchicalDataTemplate and XmlDataProvider
2.Xmldata island.xamlXmldata island.xaml
3.Hierarchical Xml TemplatesHierarchical Xml Templates
4.Using XmlDataProviderUsing XmlDataProvider
5.XmlDataProvider and static Xml resourceXmlDataProvider and static Xml resource
6.Retrieve data from XmlDataProvider with XPathRetrieve data from XmlDataProvider with XPath
7.XmlDataProvider and XmlNamespaceMappingXmlDataProvider and XmlNamespaceMapping
8.XmlDataProvider and ItemsControlXmlDataProvider and ItemsControl
9.Hyperlink and xpath filter for XmlDataProviderHyperlink and xpath filter for XmlDataProvider
10.Load XmlDocument to XmlDataProviderLoad XmlDocument to XmlDataProvider