WPF 控件数据源绑定
前提:我的数据源都放在 DataProcessView 类中,然后在 MainWindow 中声明该类的对象 DataProcess,如果是指定了 DataContext ,就将该对象赋值给 DataContext (如下),否则不赋值
csharp
public partial class MainWindow : Window
{
public DataProcessView DataProcess { get; set; }//需要指定为 public 权限
public MainWindow()
{
InitializeComponent();
DataProcess = new DataProcessView();
this.DataContext = DataProcess;
}
}
对于普通属性、
csharp
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 中赋值,如下:
csharp
Content="{Binding CurrentTime}"
未指定 DataContext 的前提下,未指定就需要将数据源的路径给写清楚
csharp
Content="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}, Path=DataProcess.CurrentTime}"
对于类属性
csharp
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 中赋值,如下:
csharp
Content="{Binding Path=BtnGuanBiYYText.Text}"
未指定 DataContext 的前提下,未指定就需要将数据源的路径给写清楚
csharp
Content="{Binding RelativeSource ={RelativeSource Mode=FindAncestor, AncestorType=Window}, Path=DataProcess.Btn1Text.Text}"