Часто задаваемые вопросы по SilverLight - часть 2 - Простой пример одностороннего и двустороннего связываний
ОГЛАВЛЕНИЕ
Страница 3 из 6
Простой пример одностороннего и двустороннего связываний
Ниже приведен простой пример программы, в которой есть два текстовых поля, одно из которых принимает возраст, а второе текстовое поле вычисляет приблизительную дату рождения.
Ниже приведен простой класс, имеющий два этих свойства. Был реализован интерфейс ‘INotifyPropertyChanged’, поэтому можно реализовать двустороннюю связь для свойства года.
using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
//
using System.ComponentModel;
namespace SilverLightBinding
{
public class clsDate : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private int _intYear;
private int _intAge;
public int Year
{
set
{
_intYear = value;
OnPropertyChanged("Year");
}
get
{
return _intYear;
}
}
public int Age
{
set
{
_intAge = value;
Year = DateTime.Now.Year - _intAge;
}
get
{
return _intAge;
}
}
private void OnPropertyChanged(string property)
{
if (PropertyChanged != null)
{
PropertyChanged(this,
new PropertyChangedEventArgs(property));
}
}
}
}
Наконец, объекты интерфейса SilverLight были связаны со свойствами класса. Ниже приводится фрагмент кода XAML для этой же задачи. Нужно учесть, что ‘Age (возраст)’ связывается при помощи двустороннего режима, так как нужно изменять то же самое из пользовательского интерфейса.
<TextBlock VerticalAlignment="Center" HorizontalAlignment="Center"> Enter your age in the below text box</TextBlock>
<TextBox x:Name="txtEnterAge" Text="{Binding Path=Age, Mode=TwoWay}" Height="30" Width="150" VerticalAlignment="Center" HorizontalAlignment="Center"></TextBox>
<TextBlock VerticalAlignment="Center" HorizontalAlignment="Center">Your approximate birth date</TextBlock>
<TextBox x:Name="txtCurrentYear" Text="{Binding Path=Year}" Height="30" Width="150" VerticalAlignment="Center" HorizontalAlignment="Center"></TextBox>
