Mega Code Archive

 
Categories / VB.Net / 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.vb Imports System Imports System.Text Imports System.Windows Imports System.Windows.Controls Imports System.Windows.Data Imports System.Windows.Documents Imports System.Windows.Input Imports System.Windows.Media Imports System.Windows.Media.Imaging Imports System.Windows.Shapes Imports System.Collections.Generic Imports System.Diagnostics Imports System.Collections Imports System.Data Imports System.Data.OleDb Imports System.ComponentModel Imports System.Xml Namespace WpfApplication1   Public Class AgeToForegroundConverter     Implements IValueConverter     Public Function Convert(value As Object, targetType As Type, parameter As Object, culture As System.Globalization.CultureInfo) As Object Implements IValueConverter.Convert       Debug.Assert(targetType Is GetType(Brush))       Dim age As Integer = Integer.Parse(value.ToString())       Return (If(age > 60, Brushes.Red, Brushes.Black))     End Function     Public Function ConvertBack(value As Object, targetType As Type, parameter As Object, culture As System.Globalization.CultureInfo) As Object Implements IValueConverter.ConvertBack       Throw New NotImplementedException()     End Function   End Class   Public Partial Class Window1     Inherits Window     Private doc As XmlDocument     Public Sub New()       InitializeComponent()       doc = New XmlDocument()       doc.LoadXml("<Company xmlns='http://company.com'>" & vbCr & vbLf & "  <Employee Name='A' Age='61' />" & vbCr & vbLf & "  <Employee Name='B' Age='72' />" & vbCr & vbLf & "  <Employee Name='C' Age='38' />" & vbCr & vbLf & "</Company>")       Dim manager As New XmlNamespaceManager(doc.NameTable)       manager.AddNamespace("sb", "http://company.com")       Binding.SetXmlNamespaceManager(stackPanel, manager)       Dim b As New Binding()       b.XPath = "/sb:Company/sb:Employee"       b.Source = doc       stackPanel.SetBinding(StackPanel.DataContextProperty, b)       AddHandler Me.birthdayButton.Click, AddressOf birthdayButton_Click     End Sub     Private Sub birthdayButton_Click(sender As Object, e As RoutedEventArgs)       Dim view As ICollectionView = CollectionViewSource.GetDefaultView(stackPanel.DataContext)       Dim person As XmlElement = DirectCast(view.CurrentItem, XmlElement)       person.SetAttribute("Age", (Integer.Parse(person.Attributes("Age").Value) + 1).ToString())       Console.WriteLine(person.Attributes("Name").Value)       Console.WriteLine(person.Attributes("Age").Value)     End Sub   End Class End Namespace