C# Wpf双向绑定实例

Wpf中双向绑定处理需要两处

实例1:

1.前台Xaml中属性Binding 时Model指定 TwoWay

<Grid>
    <Ellipse  x:Name="ellipse"
        Fill="#FFF4F4F5" HorizontalAlignment="Left" 
                Height="{Binding Path=Number,Mode=TwoWay}" Margin="50,55,0,0" Stroke="Black"
                VerticalAlignment="Top" Width="{Binding Path=Number,Mode=TwoWay}"/>
    <Slider x:Name="slider"  Margin="28,167,22,0" ValueChanged="slider_ValueChanged"
            VerticalAlignment="Top" TickPlacement="Both" Maximum="100" SmallChange="1"/>
    <Label x:Name="label" Content="{Binding Path=Number,Mode=TwoWay}" HorizontalAlignment="Left" Margin="110,150,0,0" VerticalAlignment="Top"/>
</Grid>

2.后台绑定的数据上线文实现INotifyPropertyChanged(向客户端发出某一属性值已更改的通知。)接口

/// <summary>
/// Thread6.xaml 的交互逻辑
/// </summary>
public partial class Thread6 : Window
{

    TestData testData = new TestData() { Number = 10 };
    public Thread6()
    {
        InitializeComponent();
        //创建双向绑定
        ellipse.DataContext = testData;
        label.DataContext = testData;
    }
    private void slider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
    {
        testData.Number = (int)e.NewValue;
    }
}
public class TestData : INotifyPropertyChanged
{
    private int _Number;
    public int Number
    {
        get
        {
            return _Number;
        }
        set
        {
            _Number = value;
            if (this.PropertyChanged != null)
            {
                this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs("Number"));
            }
        }
    }
    public event PropertyChangedEventHandler PropertyChanged;
}

显示结果:

实例2:使用Wpf的双向绑定机制,可以实现多线程修改UI

注:其他线程修改绑定数据时会通知到UI线程修改界面数据。

TestData类定义同上

Xaml定义同上

//创建双向绑定
ellipse.DataContext = testData;
//创建线程修改数据
Task.Run(() =>
{
    while (true)
    {
        testData.Number++;
        if (testData.Number == 200)
            testData.Number = 0;
        Thread.Sleep(100);
    }
});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值