Windows 应用商店 - 动态绑定
Windows Store App - Dynamic Binding
需要第二组眼睛。我正在使用文本框、复选框等动态填充集线器控件...在执行此操作时,我在添加每个控件时将数据绑定添加到它。问题是加载事件后所做的任何更改都没有正确注册。基本上根本不注册。我的对象实现了 iNotify属性Changed。这里有一些片段,希望能更好地解释这个场景。
动态控件创建和数据绑定
var b = new Binding
{
Mode = BindingMode.TwoWay,
Source = detail.Answer
};
var txtBx = new TextBox() { Width = 260, Height = 18, Margin = new Thickness(0, 0, 0, 5) };
txtBx.SetBinding(TextBox.TextProperty, b);
对象属性
public string Answer
{
get
{
return _answer;
}
set
{
if (value == _answer) return;
_answer = value;
OnPropertyChanged(nameof(Answer));
}
}
属性 改变方法
[NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
我错过了什么?一如既往地感谢反馈
您需要设置绑定路径,我一直使用静态 SetBinding:
var binding = new Binding
{
Source = _sectionHeaderSlider,
Mode = BindingMode.TwoWay,
Path = new PropertyPath("Value"),
};
BindingOperations.SetBinding(ScrollTransform, Windows.UI.Xaml.Media.CompositeTransform.TranslateXProperty, binding);
需要第二组眼睛。我正在使用文本框、复选框等动态填充集线器控件...在执行此操作时,我在添加每个控件时将数据绑定添加到它。问题是加载事件后所做的任何更改都没有正确注册。基本上根本不注册。我的对象实现了 iNotify属性Changed。这里有一些片段,希望能更好地解释这个场景。
动态控件创建和数据绑定
var b = new Binding
{
Mode = BindingMode.TwoWay,
Source = detail.Answer
};
var txtBx = new TextBox() { Width = 260, Height = 18, Margin = new Thickness(0, 0, 0, 5) };
txtBx.SetBinding(TextBox.TextProperty, b);
对象属性
public string Answer
{
get
{
return _answer;
}
set
{
if (value == _answer) return;
_answer = value;
OnPropertyChanged(nameof(Answer));
}
}
属性 改变方法
[NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
我错过了什么?一如既往地感谢反馈
您需要设置绑定路径,我一直使用静态 SetBinding:
var binding = new Binding
{
Source = _sectionHeaderSlider,
Mode = BindingMode.TwoWay,
Path = new PropertyPath("Value"),
};
BindingOperations.SetBinding(ScrollTransform, Windows.UI.Xaml.Media.CompositeTransform.TranslateXProperty, binding);