Get XmlElement from Bounded view : Binding « Windows Presentation Foundation « VB.Net






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.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

   
    
    
  








Related examples in the same category

1.Bind to a Property of a UI ElementBind to a Property of a UI Element
2.Bind a Property of an Element to ItselfBind a Property of an Element to Itself
3.Specify a Default Value for a BindingSpecify a Default Value for a Binding
4.Create a Two-Way BindingCreate a Two-Way Binding
5.Debug Bindings Using Attached PropertiesDebug Bindings Using Attached Properties
6.String Array ResourceString Array Resource
7.Bind animate target value to Canvas(Window) widthBind animate target value to Canvas(Window) width
8.Display Current Date and Time: binding the DateTime.Now to LabelDisplay Current Date and Time: binding the DateTime.Now to Label
9.One way and two way bindingOne way and two way binding
10.Custom Element Binding WindowCustom Element Binding Window
11.Customize UpdateSourceExceptionFilterCustomize UpdateSourceExceptionFilter
12.Assign your own class to DataContent and bind to TextBoxAssign your own class to DataContent and bind to TextBox
13.Async bindingAsync binding
14.Null property bindingNull property binding
15.Binding Property with ExceptionBinding Property with Exception
16.Hierarchical Binding for three level nested objectsHierarchical Binding for three level nested objects
17.BindingOperations.GetBindingExpressionBindingOperations.GetBindingExpression
18.Bind to enum typesBind to enum types
19.Bind to a MethodBind to a Method
20.Manual Update TargetManual Update Target
21.Bind to the Values of an EnumerationBind to the Values of an Enumeration
22.Master Detail BindingMaster Detail Binding
23.Data binding using collections composed of mixed types of data.Data binding using collections composed of mixed types of data.
24.Binding Environment InfoBinding Environment Info
25.Bind to an ADO.NETDataSetBind to an ADO.NETDataSet
26.Text Data BindingText Data Binding
27.Bind to an Existing Object InstanceBind to an Existing Object Instance
28.Digital ClockDigital Clock
29.Use Data Triggers to Change the Appearance of Bound DataUse Data Triggers to Change the Appearance of Bound Data