Salakhetdinov Shamil
mcp2004 at mail.ru
Tue Jun 2 19:03:11 CDT 2009
Hi All,
Here is the next sampple on WPD databinding - now with a combobxo to navigate between three object instances. You can also edit fields values via wpf form and you can find they are saved in form's local memory:
Here is the link to the live sample:
http://shamils-4.hosting.parking.ru/xaml/WpfBrowserApplication2.xbap
and in P.S. you can fiund code.
Basically that's all main information on databinding I wanted to tell here, and in the following samples I plan to implement step by step navigation and data manipulation set of buttons.
Thank you.
--
Shamil
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="10"/>
<RowDefinition Height="30"/>
<RowDefinition Height="30"/>
<RowDefinition Height="30"/>
</Grid.RowDefinitions>
<TextBlock
Margin="4" Text="Shippers:"
Grid.Row="0" Grid.Column="0"
VerticalAlignment= "Center"/>
<ComboBox x:Name="cboShippers"
Margin="4"
Grid.Row="0" Grid.Column="1"
SelectedValuePath="Id"
DisplayMemberPath="Name"
SelectionChanged="cboShippers_SelectionChanged" />
<TextBlock
Margin="4" Text="Id"
Grid.Row="2" Grid.Column="0"
VerticalAlignment= "Center"/>
<TextBlock
Text="{Binding Path=Id, Mode=OneWay}"
Margin="4"
Grid.Row="2" Grid.Column="1"/>
<TextBlock
Margin="4"
Text="Name"
Grid.Row="3" Grid.Column="0"
VerticalAlignment="Center"/>
<TextBox
Margin="4"
Text="{Binding Path=Name, Mode=TwoWay}"
Grid.Row="3" Grid.Column="1"/>
<TextBlock
Margin="4"
Text="Phone"
Grid.Row="4" Grid.Column="0"
VerticalAlignment="Center"/>
<TextBox
Margin="4"
Text="{Binding Path=Phone, Mode=TwoWay}"
Grid.Row="4" Grid.Column="1" />
</Grid>
</Page>
Shippers.xaml.cs
================
using System.Collections.Generic;
using System.Windows.Controls;
using System.Windows.Documents;
using System.ComponentModel;
namespace WpfBrowserApplication1
{
public partial class ShippersPage : Page
{
private List<Shipper> _shippers;
private Shipper _currentShipper;
public ShippersPage()
{
InitializeComponent();
_loadInProgress = true;
_shippers = Shipper.GetAll();
// Set the DataContext
// to a Shipper object
this.DataContext = _shippers[0];
foreach (Shipper shipper in _shippers)
cboShippers.Items.Add(shipper);
_currentShipper = _shippers[0];
cboShippers.SelectedItem = _currentShipper;
_loadInProgress = false;
}
private bool _loadInProgress;
private void cboShippers_SelectionChanged(
object sender,
SelectionChangedEventArgs e)
{
if (_loadInProgress) return;
ComboBox cbo = (ComboBox)sender;
_currentShipper = (Shipper)cbo.SelectedItem;
this.DataContext = cbo.SelectedItem;
e.Handled = true;
}
}
public class Shipper : INotifyPropertyChanged
{
public static List<Shipper> GetAll()
{
List<Shipper> list = new List<Shipper>();
list.Add(
new Shipper()
{
Id = 1,
Name = "Speedy Express",
Phone = "(503) 555-9831"
});
list.Add(
new Shipper()
{
Id = 2,
Name = "United Package",
Phone = "(503) 555-3199"
});
list.Add(
new Shipper()
{
Id = 3,
Name = "Federal Shipping",
Phone = "(503) 555-9931"
});
return list;
}
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
}
}
-----Original Message-----
From: Salakhetdinov Shamil <mcp2004 at mail.ru>
To: dba-VB <dba-vb at databaseadvisors.com>
Date: Tue, 02 Jun 2009 02:17:49 +0400
Subject: [dba-VB] SCRUM/WPF Data Binding
> Hi All,
>
> I planned here is the first sample of WPF data bidining:
>
> http://shamils-4.hosting.parking.ru/xaml/WpfBrowserApplication2.xbap
>
<<< snip>>>