以最小的努力将用户控件绑定到对象属性

时间:2013-02-20 12:17:47

标签: c# wpf xaml binding user-controls

我有用户控制权:

<UserControl>
    <TextBox Name="TB1"/>
    <TextBox Name="TB2"/>
</UserControl>

代码背后:

public partial class MyControl : UserControl
{
  public TwoStrings TsObj { get; set; }
  public MyControl()
  {
      InitializeComponent();
  }
}

哪里

public class TwoStrings
{
    string S1 { get; set; }
    string S2 { get; set; }
}

如何使用最少的代码更改将TsObj.S1绑定到TB1.Text和TsObj.S2到TB2.Text?不应更改TwoStrings。对象的更新应该反映在控制上。代码示例请。

1 个答案:

答案 0 :(得分:2)

互联网上有很多关于wpf / silverlight数据绑定的资源,即使是在stackoverflow中也是如此。但长话短说,你可以简单地做到这一点:

<UserControl>
  <TextBox Name="TB1" Text="{Binding S1}" />
  <TextBox Name="TB2" Text="{Binding S2}"/>
</UserControl>
public partial class MyControl : UserControl
{
    public TwoStrings TsObj { get; set; }
    public MyControl()
    {
      InitializeComponent();

      this.DataContext = TsObj = new TwoStrings();
    }
}

编辑:请注意,如果您通过TwoStrings实例中的代码更改属性,则不会反映在文本框中,因为您需要在TwoStrings中实现INotifyPropertyChanged接口(这是ViewModel - MVVM模式中的VM)以获得双向数据绑定。否则,您只能从文本框中获取数据绑定到datacontext上的属性(TwoString)