Binding应用(一)

下面我们用Binding实现一个简单的小程序。

首先是界面XAML:

<Grid>
    <StackPanel>
        <ProgressBar Name="Bar1" Margin="5" Height="20" Maximum="100" Minimum="0"></ProgressBar>
        <ProgressBar Name="Bar2" Margin="5" Height="20" Maximum="100" Minimum="0"></ProgressBar>
        <ProgressBar Name="Bar3" Margin="5" Height="20" Maximum="100" Minimum="0"></ProgressBar>
        <ProgressBar Name="Bar4" Margin="5" Height="20" Maximum="100" Minimum="0"></ProgressBar>
        <Button Margin="5" Click="Start_Click">Start</Button>
    </StackPanel>
</Grid>

4 个 ProgressBar

对应的cs代码:

首先定义一个数据源

 class Value : INotifyPropertyChanged
    {
        private int iValue;

        public int IntValue
        {
            get { return iValue; }
            set
            {
                iValue = value;
                if (PropertyChanged != null)
                {
                    PropertyChanged.Invoke(this, new PropertyChangedEventArgs("IntValue"));
                }
            }
        }

        public event PropertyChangedEventHandler PropertyChanged;
    }

然后是主要逻辑

public partial class MainWindow : Window
    {
        private static Value value1 = new Value();
        private static Value value2 = new Value();
        private static Value value3 = new Value();
        private static Value value4 = new Value();

        public MainWindow()
        {
            InitializeComponent();
            this.Bar1.SetBinding(RangeBase.ValueProperty, new Binding("IntValue") {Source = value1});
            this.Bar2.SetBinding(RangeBase.ValueProperty, new Binding("IntValue") { Source = value2 });
            this.Bar3.SetBinding(RangeBase.ValueProperty, new Binding("IntValue") { Source = value3 });
            this.Bar4.SetBinding(RangeBase.ValueProperty, new Binding("IntValue") { Source = value4 });
        }

        private static Timer timer = GetTimer(); 

        private static bool flag = false;

        private void Start_Click(object sender, RoutedEventArgs e)
        {
            if (!flag)
            {
                timer.Enabled = true;
                flag = true;
            }
            else
            {
                flag = false;
                timer.Enabled = false;
            }
        }

        private static void GetRandom()
        {
            Random rd = new Random();
            value1.IntValue = rd.Next(0, 100);
            value2.IntValue = rd.Next(0, 100);
            value3.IntValue = rd.Next(0, 100);
            value4.IntValue = rd.Next(0, 100);
        }

        private static  Timer GetTimer(int val = 30)
        {
            Timer timer = new Timer(val);
            timer.Elapsed += (sender, e) =>
            {
                GetRandom();
            };
            return timer;
        }

    }

函数GetTimer 返回一个计时器,这个计时器每隔0.003s触发一次。然后对4个Value的实例的属性进行修改(使用随机数)。

  • 构造函数中对四个PrograssBar进行了绑定,绑定的数据源就是4个静态变量的IntValue属性。
  • 当按钮被按时会开启定时器然后修改属性值,从而修改PrograssBae的值。在按按钮则会关掉定时器。再按开启。。。

实验现象:
这里写图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值