数据绑定
组件之间的绑定
<StackPanel> <Slider x:Name="sd" Width="200" /> <TextBox Text="{Binding ElementName=sd, Path=Value}" /> </StackPanel>
绑定数据源
<Window.Resources> <TextBox x:Key="txt">Hello</TextBox> </Window.Resources> <Grid> <StackPanel> <TextBox FontSize="30" Text="{Binding Source={StaticResource txt}, Path=Text}" /> </StackPanel> </Grid>
绑定数据上下文
<TextBox x:Name="txt" FontSize="30" Text="{Binding Name, FallbackValue='Not Found'}" /> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); this.DataContext = new Person() { Name = "abc" }; } } public class Person { public string Name { get; set; } }
当前窗口的数据上下文
//新建文件MainViewModel
public class MainViewModel { public MainViewModel() { Name = "Hello"; } public string Name { get; set; } }
public MainWindow() { InitializeComponent(); this.DataContext = new MainViewModel(); }
实现双向绑定
public class MainViewModel : INotifyPropertyChanged { public MainViewModel() { Name = "Hello"; Task.Run(async () => { await Task.Delay(3000); Name = "No"; }); } private string name; public string Name { get { return name; } set { name = value; OnPropertyChanged("Name"); } } public event PropertyChangedEventHandler? PropertyChanged; protected void OnPropertyChanged(string propertyName) { if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } } }
mvvmlight
public class MainViewModel : ViewModelBase { public MainViewModel() { Name = "Hello"; Task.Run(async () => { await Task.Delay(3000); Name = "No"; }); } private string name; public string Name { get { return name; } set { name = value; RaisePropertyChanged(); } } }
绑定事件
public class MainViewModel : ViewModelBase { public MainViewModel() { Name = "Hello"; SaveCommand = new RelayCommand(() => { Name = "No"; }); } public RelayCommand SaveCommand { get; private set; } private string name; public string Name { get { return name; } set { name = value; RaisePropertyChanged(); } } }
<Button Width="100" Height="40" Command="{Binding SaveCommand}" Content="click" />
标签:Name,绑定,Binding,name,MainViewModel,WPF,public,string From: https://www.cnblogs.com/baisedeyu/p/17688089.html