Salakhetdinov Shamil
mcp2004 at mail.ru
Mon Jun 1 17:17:49 CDT 2009
Hi All, I planned here is the first sample of WPF data bidining: http://shamils-4.hosting.parking.ru/xaml/WpfBrowserApplication2.xbap As you can find it promise to be rather time consuming to implement binding to ADO.NET datasets, which isn't supported natively in .NET 3.5. The following sample just implements bindind to an object instance. Robert, you have experience with VS2010 - does it have advanced data binding controls as e.g. WinForms' BidingSource and BindingNavigator? Thank you. -- Shamil P.S. Here is the code of the referenced above sample page: Shippers.xaml ============= <Page x:Class="WpfBrowserApplication1.ShippersPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Shippers" Height="180" Width="260"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="74"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="30"/> <RowDefinition Height="30"/> <RowDefinition Height="30"/> </Grid.RowDefinitions> <TextBlock Margin="4" Text="Id" VerticalAlignment= "Center"/> <TextBox Text="{Binding Path=Id, Mode=TwoWay}" Margin="4" Grid.Column="1"/> <TextBlock Margin="4" Text="Name" Grid.Row="1" VerticalAlignment="Center"/> <TextBox Margin="4" Text="{Binding Path=Name, Mode=TwoWay}" Grid.Column="1" Grid.Row="1"/> <TextBlock Margin="4" Text="Phone" Grid.Row="2" VerticalAlignment="Center"/> <TextBox Margin="4" Text="{Binding Path=Phone, Mode=TwoWay}" Grid.Column="1" Grid.Row="2"/> </Grid> </Page> Shippers.xaml.cs ================ using System.Windows.Controls; using System.ComponentModel; namespace WpfBrowserApplication1 { public partial class ShippersPage : Page { public ShippersPage() { InitializeComponent(); // Set the DataContext // to a Shipper object this.DataContext = new Shipper() { Id = 1, Name = "Speedy Express", Phone = "(503) 555-9831" }; } } public class Shipper : INotifyPropertyChanged { private int _id; public int Id { get { return _id; } set { if (_id != value) { _id = value; OnPropertyChanged("Id"); } } } private string _name; public string Name { get { return _name; } set { _name = value; if (_name != value) { _phone = value; OnPropertyChanged("Name"); } } } private string _phone; public string Phone { get { return _phone; } set { _phone = value; if (_phone != value) { _phone = value; OnPropertyChanged("Phone"); } } } #region INotifyPropertyChanged Members /// Implement INotifyPropertyChanged to notify the binding /// targets when the values of properties change. public event PropertyChangedEventHandler PropertyChanged; private void OnPropertyChanged(string propertyName) { if (this.PropertyChanged != null) { // Raise the PropertyChanged event this.PropertyChanged( this, new PropertyChangedEventArgs( propertyName)); } } #endregion } }