Mega Code Archive

 
Categories / C# / WPF
 

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);     }     } }