大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE稳定放心使用
WPF
中
,
对控件做数据
banding
,
可以方便的进行赋值和获得值的操作
:
例如一
:
Grid
>
<
Slider
Name
=”Slider1″
HorizontalAlignment
=”Left”
Margin
=”38,55,0,0″
VerticalAlignment
=”Top”
Height
=”19″
Width
=”227″
/>
<
TextBox
Text
=”{Binding Value,ElementName=Slider1}”
HorizontalAlignment
=”Left”
Height
=”23″
Margin
=”38,101,0,0″
TextWrapping
=”Wrap”
VerticalAlignment
=”Top”
Width
=”120″
/>
</
Grid
>
:(
可以通过
slider
来滑动,控制
textbox
值的显示
)
:
为控件设置数据源
:
.a New
一个类的实例,给 要绑定的控件设定
DataContext
private
void Window_Loaded(
object sender, RoutedEventArgs e)
{
Person person =
new Person();
person.Age = 22;
person.Name =
“Charles”;
tbAge.DataContext = person;
tbName.DataContext = person;
}
public
class Person
{
public
int Age { set; get; }
public
string Name { set; get; }
}
.
b
XAML
中设置数据绑定的控件属性
<
TextBox
Name
=”tbName”
ToolTip
=”{Binding Name}”
HorizontalAlignment
=”Left”
Height
=”23″
Margin
=”80,162,0,0″
TextWrapping
=”Wrap”
Text
=”{Binding Name}”
VerticalAlignment
=”Top”
Width
=”120″
/>
<
TextBox
Name
=”tbAge”
ToolTip
=”{Binding Age}”
HorizontalAlignment
=”Left”
Height
=”23″
Margin
=”80,207,0,0″
TextWrapping
=”Wrap”
Text
=”{Binding Age}”
VerticalAlignment
=”Top”
Width
=”120″
/>
<
TextBlock
Text
=”姓名”
Width
=”30″
Margin
=”39,163,434,125″
/>
<
TextBlock
Margin
=”38,207,435,81″
Text
=”年龄”
Width
=”30″
/>
显示效果:
,
此种做法
,
无法将从后台变化的值在界面体现
;
如果需要后台对象值变化
,
前台也变化
,
就使用【
INotifyPropertyChanged
】”属性变化通知”机制来实现
.
2.a
修改类的定义
(
注意需要引入
System.ComponentModel
)
:
INotifyPropertyChanged
,并实现该接口方法,如下:
:
using
System.ComponentModel;
class Person : INotifyPropertyChanged
{
private
int age;
private
string name;
public
int Age
{
get {
return age; }
set
{
this.age = value;
if (PropertyChanged !=
null)
{
PropertyChanged(
this,
new PropertyChangedEventArgs(
“Age”));
}
}
}
public
string Name
{
get {
return name; }
set {
this.name = value;
if (PropertyChanged !=
null)
{
PropertyChanged(
this,
new PropertyChangedEventArgs(
“Name”));
}
}
}
public
event PropertyChangedEventHandler PropertyChanged;
}
其他步骤同上述
1.a\1.b,
为看到效果,可以添加一个按钮来实现!
private
void btAge_Click(
object sender, RoutedEventArgs e)
{
person.Age++;
}
截图:
banding
)之争:
对控件上下文
(
DataContext
)
的指定
,
第一种
:
可以直接指定给控件
,
缺点是当控件多了
,
代码量相对来说就多来了
;
第二种
:
指定给其父控件
,
当不给子控件指定
DataContext
时
,
默认使用父控件的上下文
,
相对来说
,
代码简约
.
:
:
new Person();
person.Age = 22;
person.Name =
“Charles”;
tbAge.DataContext = person;
tbName.DataContext = person;
采用第二种
:
new Person();
this.DataContext = person;(注意:
this,指代当前窗体,也可以使用当前需要绑定上下文的共有父控件,如grid1.DataContext=person)
转载于:https://blog.51cto.com/charlesxiao/1138931
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/182535.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...