现在的位置: 首页 > 综合 > 正文

silverlight依赖属性

2012年02月02日 ⁄ 综合 ⁄ 共 2318字 ⁄ 字号 评论关闭

1.一个实体类,需要实现“INotifyPropertyChanged”接口

 

代码

    public class student : INotifyPropertyChanged
    {
        
string name;

        public string Name
        {
            
get { return name; }
            
set
            {
                name 
= value;

                //这里需要传递“Name”,而不是私有变量“name”
                NotifyPropertyChange("Name");       
            }
        }

        public int age { getset; }

        #region INotifyPropertyChanged 成员

        public event PropertyChangedEventHandler PropertyChanged;       //INotifyPropertyChanged接口委托
        private void NotifyPropertyChange(string propertyName)
        {
            
if (PropertyChanged != null)
            {
                
//通知更新所有绑定了propertyName,属性的控件更新界面值
                PropertyChanged(thisnew PropertyChangedEventArgs(propertyName));
            }
        }

        #endregion
    }

 

 

2.在xaml中,设置控件的绑定更新方向: <sdk:Label Height="28" Content="{Binding Name,Mode=TwoWay}"

 

代码

    <Grid x:Name="LayoutRoot">
        
<TextBox Height="23" HorizontalAlignment="Left" Margin="250,144,0,0" Name="txtName" VerticalAlignment="Top" Width="120" />
        
<sdk:Label Height="23" Content="名称:" HorizontalAlignment="Left" Margin="175,144,0,0" Name="label1" VerticalAlignment="Top" Width="69" />
        
<Button Content="确定" Height="23" HorizontalAlignment="Left" Margin="250,215,0,0" Name="btnOK" VerticalAlignment="Top" Width="75" Click="btnOK_Click" />
        
<sdk:Label Height="28" Content="{Binding Name,Mode=TwoWay}" HorizontalAlignment="Left" Margin="175,103,0,0" Name="labMessage" VerticalAlignment="Top" Width="120" />
        
<TextBox Height="23" HorizontalAlignment="Left" Margin="250,173,0,0" Name="txtAge" VerticalAlignment="Top" Width="120" />
        
<sdk:Label Content="年龄:" Height="23" HorizontalAlignment="Left" Margin="175,173,0,0" Name="label3" VerticalAlignment="Top" Width="69" />
    
</Grid>

 

 

3.在cs代码中更新实体类的依赖属性

 

代码

    public partial class Page1 : Page
    {
        student myStudent 
= new student();

        public Page1()
        {
            InitializeComponent();

            myStudent.Name = "张三";
            myStudent.age 
= 20;

            this.DataContext = myStudent;
        }

        private void btnOK_Click(object sender, RoutedEventArgs e)
        {
            
//myStudent.Name更新的同时,也会自动更新labMessage.Content的值
            myStudent.Name = txtName.Text;
        }
    }

 

 

 

抱歉!评论已关闭.