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
{
///
/// WinDecorator.xaml 的交互逻辑
///
public partial class WinDecorator : Window
{
public WinDecorator()
{
InitializeComponent();
Items = new List();
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 e)
{
var old = e.OldValue;
var newV = e.NewValue;
}
public List 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;
///
/// 值信息
///
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
}
}