WPF数据绑定模式

三种数据绑定模式

1.OneTime:一次绑定
在绑定创建时使用源数据更新目标,适用于只显示数据而不进行数据的更新。{Binding xxx} xxx表示属性名
默认的绑定模式是一次绑定OneTime。
这种数据绑定模式,只是显示数据而不对数据做任何修改

 <TextBlock x:Name="lblAge" Foreground="White" FontSize="18"
               Grid.Row="2" Grid.Column="1" HorizontalAlignment="Left"
               Text="{Binding Age}"/>
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
    User user = new User();
    user.Name = "TerryLee";
    user.Age= 15;

    lblName.DataContext = user;
    lblAge.DataContext = user;
}

2.OneWay:单向绑定
在绑定创建时或者源数据发生变化时更新到目标,适用于显示变化的数据。{Binding xxx,Mode=OneWay}

3.TwoWay:双向绑定
在任何时候都可以同时更新源数据和目标。{Binding xxx,Mode=TwoWay}

如果需要在数据源发生变化时能够通知UI进行相应的更新,即使用单向绑定OneWay或者双向绑定TwoWay,则业务实体需要实现接口INotifyPropertyChanged。

class Person: INotifyPropertyChanged
    {
        private string _name;
        public string Name
        {
            get { return _name; }
            set
            {
                _name = value;
                if (PropertyChanged != null)
                {
                    PropertyChanged(this, new PropertyChangedEventArgs("Name"));
                }
            }
        }
        public int  Age { get; set; }

        public event PropertyChangedEventHandler PropertyChanged;
    }

绑定的实体必须实现该接口,否则数据无法变换。

        <TextBox x:Name="txtName" Text="{Binding Name,Mode=OneWay}" HorizontalAlignment="Left" Height="44" Margin="106,151,0,0" TextWrapping="Wrap"  VerticalAlignment="Top" Width="120"/>

通过一个按钮,再点击了按钮之后文本框中的信息自然就会发生改变。

  Personperson ;
  private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            person = new Person();
            person.Name = "张三";
            person.Age = 18;
           txtName.DataContext = person;            
        }

        private void button_Click(object sender, RoutedEventArgs e)
        {
            person.Name = "李四";
        }

队列表的数据绑定

<ListBox x:Name="PostList" Grid.Column="0" Grid.Row="1"
             Margin="40 10 10 10"
             HorizontalContentAlignment="Left" VerticalContentAlignment="Bottom"
             ItemsSource="{Binding Posts}">
    </ListBox>
private void Window_Loaded(object sender, RoutedEventArgs e)
{
             List<String> Posts =  new List<String>
    {
        "第一通道",
        "第二通道",
        "第三通道",
        "第四通道"
    };
    PostList.DataContext = blog;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值