wpf binding

第一种binding 绑定到元素上

<Slider x:Name="sd" Width="800" />
<TextBox Text="{Binding ElementName=sd ,Path=Value}">

这种binding就是binding到元素上,第二行代码<TextBox Text="{Binding ElementName=sd ,Path=Value}">

ElementName就是指定元素的Name  Path就是元素的属性值。

 

第二种binding到资源上

<Window.Resources>
    <TextBox x:Key="txt">Hello</TextBox>
</Window.Resources>

<Slider x:Name="sd" Width="800" />
<TextBox Text="{Binding Source={StaticResource txt},Path=Text}"/>

这种binding是binding到资源上,<TextBox Text="{Binding Source={StaticResource txt},Path=Text}"/>这个就是binding到资源的方式。StaticResource就是查找资源中的Name。

 

第三种binding数据上下文

XAML代码

<TextBox x:Name="txt" Text="{Binding Name",FallbackValue="Not Found"}/>

C#中代码

public Mainwindow()
{
    InitialzeComponent();
    txt.DataContext = new Person(){ Name = "ABC"}

}
public class Person
{
    public string Name{get;set;}

}

其中txt.DataContext = new Person(){ Name = "ABC"}     FallbackValue是设置默认值的。

这里面的Name是<TextBox x:Name="txt" Text="{Binding Name"/>中的Name,而txt是XAML中的Name属性。

也可以把C#代码写到其他cs文件中,

public class MainVieModel
{
    public MainVieModel()
    {
        Name = "Hello";        
    }
    public string Name{get;set;}
}

在MainWindow函数中

public Mainwindow()
{
    InitialzeComponent();
    this.DataContext = new MainVieModel();
}

在XAML中

<TextBox x:Name="txt" Text="{Binding Name",FallbackValue="Not Found"}/>

在其他位置创建一个文件夹,保证命名空间一致即可。

 

要想实时更新到UI

xxx.cs中的代码

public class MainVieModel : INotifyProertyChanged
{
    public MainVieModel()
    {
        Name = "Hello";  
        task.Run(
            async() =>
            {
                await Task.Delay(3000);//3s
                Name = "No";
            }
        );      
    }
    public string Name;

    public string Name
    {
        get{return name;}
        set{
            name = value;
            OnPropertyChanged("Name");
        }
    }
    public event PropertyChangedEcentHandler ProertyChanged;

    protected void OnPropertyChanged(string properName)
    {
        if(PropertyChanged != null)
        {
            PropertyChanged(this,new PropertyChangedEventArgs(properName));
        }
    }
}

其他的不变

这是个延时函数

        task.Run(
            async() =>
            {
                await Task.Delay(3000);//3s
                Name = "No";
            }
        ); 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

波雅_汉库克

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值