<Window x:Class="XmlBinding.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:XmlBinding"
Title="XmlBinding" Height="325" Width="400">
<Window.Resources>
<XmlDataProvider x:Key="Company" XPath="/sb:Company/sb:Employee">
<XmlDataProvider.XmlNamespaceManager>
<XmlNamespaceMappingCollection>
<XmlNamespaceMapping Uri="http://company.com" Prefix="sb" />
</XmlNamespaceMappingCollection>
</XmlDataProvider.XmlNamespaceManager>
<x:XData>
<Company xmlns="http://company.com">
<Employee Name="A" Age="11" />
<Employee Name="B" Age="12" />
<Employee Name="C" Age="38" />
</Company>
</x:XData>
</XmlDataProvider>
<local:AgeToForegroundConverter x:Key="ageConverter" />
</Window.Resources>
<StackPanel DataContext="{StaticResource Company}">
<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}}" />
</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 XmlBinding {
public partial class Window1 : Window {
public Window1() {
InitializeComponent();
}
ICollectionView GetCompanyView() {
DataSourceProvider provider = (DataSourceProvider)this.FindResource("Company");
return CollectionViewSource.GetDefaultView(provider.Data);
}
}
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 > 25 ? Brushes.Red : Brushes.Black);
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
throw new NotImplementedException();
}
}
}
|