<StackPanel x:Name="sp1">
<Slider Name="slider" Margin="5" Value="{Binding Value}" ></Slider>
<TextBox Text="{Binding Value ,StringFormat=F2 }" Margin="5" Height="30"/>
<TextBox Text="{Binding ElementName=slider, Path=Value,StringFormat=F2 }" Margin="5" Height="30"/>
<TextBox Text="{Binding ElementName=slider, Path=Value, Mode=OneTime}" Margin="5" Height="30"/>
<TextBox Text="{Binding ElementName=slider, Path=Value ,Mode=OneWay}" Margin="5" Height="30"/>
<TextBox Text="{Binding ElementName=slider, Path=Value ,Mode=TwoWay}" Margin="5" Height="30"/>
<TextBox Text="{Binding ElementName=slider, Path=Value ,Mode=OneWayToSource , FallbackValue=5 }" Margin="5" Height="30"/>
<Button Name="bt1" Content="点击我" Command="{Binding myCommand}" Margin="5" Height="30"/>
</StackPanel>
1)数据绑定比较简单,只要在合适的位置建立数据,然后再XAML中指定绑定的数据(前提要指定绑定的数据源) 为了方便指定,可以给你需要的标签命名,然后用这名字指定数据源,如果整个上下文只有一个数据源,就可以直接用this.DataContext =XXXX
//NameClass nameClass = new NameClass();
//this.DataContext = nameClass;
this.sp1.DataContext = new NameClass();
//this.DataContext = new MainViewModel();
this.bt1.DataContext = new MainViewModel();
2)命令绑定需要使用MVVM模型中;首先你需要一个建立的ICommand接口基础上的类;在这里类里面你需要实现下面的两个方法,一个初始化器,以及一个事件,和一个委托字段;
委托字段是用来存储你要关联的命令的,然后执行,初始化器传入需要执行的命令,如果这个命令是没有参数的,就定义没有参数的命令,如果是有参数,或者有返回值的,根据需要定义;
public class ClassMyCommand : ICommand
{
Action actionForCommand;
public ClassMyCommand( Action action)
{
actionForCommand = action;
}
public event EventHandler CanExecuteChanged;
public bool CanExecute(object parameter)
{
return true;
}
public void Execute(object parameter)
{
actionForCommand();
}
3)定义好这个命令类后,再去定义一个资源类;在这个类里面,首先定义要执行的函数,例如Show();同时定义一个刚刚定义好的类的实例作为这个类的属性;初始化的时候,把函数传递给这个属性,然后属性会把这个函数关联到自己内的委托上,后续命令发送的时候就会触发执行者命令(函数)
public class MainViewModel
{
public ClassMyCommand myCommand { get; set; }
public MainViewModel() {
myCommand = new ClassMyCommand(Show);
}
public void Show()
{
MessageBox.Show("nihao!");
}
}
现在是学习了最简单的MVVM的命令绑定。