12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Data;
- using System.Windows.Documents;
- using System.Windows.Input;
- using System.Windows.Media;
- using System.Windows.Media.Imaging;
- using System.Windows.Shapes;
- namespace Test.Decorator
- {
- /// <summary>
- /// WinDecorator.xaml 的交互逻辑
- /// </summary>
- public partial class WinDecorator : Window
- {
- public WinDecorator()
- {
- InitializeComponent();
- Items = new List<string>();
- this.Value = "1";
- for (int i = 0; i < 1000; i++)
- {
- Items.Add("adada" + i.ToString());
- }
- this.DataContext = this;
- this.Loaded += WinDecorator_Loaded;
- }
- private void WinDecorator_Loaded(object sender, RoutedEventArgs e)
- {
- //Spinner.CommitInput();
- }
- private void IntegerSpinner_ValueChanged(object sender, RoutedPropertyChangedEventArgs<int> e)
- {
- var old = e.OldValue;
- var newV = e.NewValue;
- }
- public List<string> Items { get; set; }
- public event PropertyChangedEventHandler PropertyChanged = (sender, e) => { };
- protected void RaisePropertyChanged(String propertyName = "")
- {
- if (PropertyChanged != null)
- {
- PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
- }
- }
- private string m_Value;
- /// <summary>
- /// 值信息
- /// </summary>
- public string Value
- {
- get { return this.m_Value; }
- set
- {
- this.m_Value = value;
- RaisePropertyChanged(nameof(this.Value));
- if (Spinner != null)
- {
- var cc = Spinner.Value;
- }
- }
- }
- #region 测试绑定顺序
- /*
- * 可以说该控件双向绑定支持的并不好,这是一个前提,因为涉及到一些强制约束,又自定义了一些触发只改变的条件;
- * 有些控件,双向绑定支持的都不是太好
- *
- * 给控件的Value赋值时,SetValue();先触发后台的绑定属性,再触发静态的force回调, changed回调
- *
- * 所以直接使用这种形式去处理事件会出问题
- *
- * 推荐使用前台ValueChanged事件,或者绑定Text加提交方式KeyDown模式处理;
- * 第二种方式,又造成了控件初始化的时候需要手动提交一次,【后台绑定的值才能传递到界面上显示】
- *
- *
- */
- #endregion
- }
- }
|