WPF 控件数据源绑定
前提:我的数据源都放在 DataProcessView 类中,然后在 MainWindow 中声明该类的对象 DataProcess,如果是指定了 DataContext ,就将该对象赋值给 DataContext (如下),否则不赋值
public partial class MainWindow : Window
{public DataProcessView DataProcess { get; set; }//需要指定为 public 权限public MainWindow(){InitializeComponent();DataProcess = new DataProcessView();this.DataContext = DataProcess;}
}
对于普通属性、
public class DataProcessView : INotifyPropertyChanged
{public event PropertyChangedEventHandler? PropertyChanged;private string _currenttime;public string CurrentTime{get { return _currenttime; }set{if (_currenttime != value){_currenttime = value;PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("CurrentTime"));}}}
}
指定 DataContext 的前提下,为一个 Label 控件 Context 在 xaml 中赋值,如下:
Content="{Binding CurrentTime}"
未指定 DataContext 的前提下,未指定就需要将数据源的路径给写清楚
Content="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}, Path=DataProcess.CurrentTime}"
对于类属性
public class DataProcessView : INotifyPropertyChanged
{public event PropertyChangedEventHandler? PropertyChanged;private ButtonModel _btn1text;public ButtonModel Btn1Text{get { return _btn1text; }set{if (_btn1text != value){_btn1text = value;PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Btn1Text"));}}}
}
指定 DataContext 的前提下,为一个 Button 控件 Context 在 xaml 中赋值,如下:
Content="{Binding Path=BtnGuanBiYYText.Text}"
未指定 DataContext 的前提下,未指定就需要将数据源的路径给写清楚
Content="{Binding RelativeSource ={RelativeSource Mode=FindAncestor, AncestorType=Window}, Path=DataProcess.Btn1Text.Text}"
对于集合属性
集合属性