绑定
在触发事件中把各个控件和函数建立关系太过于麻烦,可以尝试使用绑定的方式。
控件与控件的绑定
<Window x:Class="WpfApp2.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp2"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<StackPanel>
<Button Width="100" Height="40" />
<Slider x:Name="slider"/>
<TextBox Height="40" Text="{Binding ElementName=slider,//要绑定的控件名
Path=Value, //要绑定控件的部位
Mode=TwoWay //绑定模式:
}"/> TwoWay 双向绑定
OneWay 单向绑定
OneWayToSource 相反的单向绑定
OneTime 绑定的第一次
</StackPanel>
</Window>
控件和属性的绑定
1、创建一个类
internal class Students
{
private string _name;
public string Name { get => _name; set => _name = value; }
}
2、在MainWindow中给属性赋给面板
public partial class MainWindow : Window
{
MainWindow()
{
InitializeComponent();
this.DataContext = new Students() { Name="文豪" };
}
}
3、xaml
<Window x:Class="WpfApp2.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp2"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<StackPanel>
<TextBox Height="40" Text="{Binding Name}" TextChanged="TextBox_TextChanged"/>
</StackPanel>
</Window>
控件可静态属性的绑定(带通知)
1、创建的要储存信息的静态字段的类
internal class Class1
{
private static readonly PropertyChangedEventArgs FilterStringPropertyEventArgs = new
PropertyChangedEventArgs(nameof(Name));
public static event PropertyChangedEventHandler StaticPropertyChanged;
private static string _name;
public static string Name
{
get => _name;
set {
_name = value;
StaticPropertyChanged?.Invoke(null, FilterStringPropertyEventArgs);
}
}
}
2、xmal
<Label x:Name="l" Width="40" Height="30" Content="{Binding Path=(local:Class1.Name)}"/>