1)目前我使用过程中遇到的binding主要有三种,一种是bingding到界面上的元素,一种是与颞部数据bingding,还有一种是命令bingding,命令bingding的东西后续梳理
2)bingding到界面数据这个复杂的还涉及到数据转换之类的,暂时没有学习到,下图中的
<TextBox Text="{Binding ElementName=slider1,Path=Value}"/> 就是绑定到了元素上,首先给元素指定一个名字,好找到,当然也有方法不命名的,但是不直观,我还没有学习;
<StackPanel Grid.Column="1" >
<Slider x:Name="slider1" SmallChange="0.1" Margin="5" Width="100" Grid.Column="1" Grid.Row="1" Height="30" Minimum="-100" Maximum="100" />
<TextBox Text="{Binding ElementName=slider1,Path=Value}"/>
<TextBox x:Name="TextBox1" Text="{Binding man.Name }"/>
<TextBox Text="{Binding ElementName=TextBox1,Path=Text}"/>
</StackPanel>
3)bingding到对应的内部数据的就是下面的方法,首先在程序中要有一个类,类中有 Name这个字段;然后可以指定Text与Namebingding;
4)首先这些必须实例化,然后才能操作,DataContext就是当前XAML文件的数据源指定forDataContext,就是下面这个类的bingding,这个类继承ObservableObject,参考我之前的那个MVVM的相关的那个内容。
//this.DataContext = forDataContext.man;
this.DataContext = forDataContext;
5)这个地方我吃了一个很大的亏,原来我一直只能在指定数据源的时候指定到对应的类下面,例如上面this.DataContext = forDataContext.man; 然后 <TextBox x:Name="TextBox1" Text="{Binding Name }"/>;但是看到别人可以直接指定大A.B,自己就是不能,原来bingding的时候一定是要属性,不能是字段,就是A本身是属性,B也是属性才行,如果仅仅B是属性,A不是属性,则无法通过A.B 找到B。
public class Person:ObservableObject
{
//
private string myname;
public string Name { get { return myname; } set { myname = value; OnPropertyChanged(); } }
//
private int myage;
public int Age { get { return myage; } set { myage = value; OnPropertyChanged(); } }
}
public class ForDataContext: ObservableObject
{
public ForDataContext() {
man =new Person() { Name ="男人", Age=22};
women = new Person() { Name = "女人", Age = 20 };
}
public Person man { get; set; }
public Person women { get; set; }
}