欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

WPF数据绑定模式

程序员文章站 2022-06-09 15:58:06
...

三种数据绑定模式

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;
}
相关标签: C# wpf