2015-06-19 56 views
0

需要第二组眼睛。我用文本框,复选框等动态填充集线器控件......当我这样做时,我将数据绑定添加到每个控件,因为我添加它。问题是,加载事件后所做的任何更改都未正确注册。基本上根本不注册。我的对象实现了iNotifyPropertyChanged。这里有一些片段希望更好地解释场景。Windows应用商店应用 - 动态绑定

动态创建控件和数据绑定

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)); 
    } 

我错过了什么?欣赏反馈一如既往

+0

是这件事情?大声笑。我可以问一些不常见的东西吗?对我的问题采取不同的方法可能会更好。 – CodeInColor

回答

1

您需要设置绑定路径,我一直使用的静态SetBinding:

var binding = new Binding 
     { 
      Source = _sectionHeaderSlider, 
      Mode = BindingMode.TwoWay, 
      Path = new PropertyPath("Value"), 
     }; 
     BindingOperations.SetBinding(ScrollTransform, Windows.UI.Xaml.Media.CompositeTransform.TranslateXProperty, binding); 
+0

谢谢你Dani。那样做了。 – CodeInColor