一、WPF绑定各种数据源索引
二、WPF绑定各种数据源之元素控件属性
1.绑定Value路径
<TextBlock Margin=
"327,378,331,363"
Name=
"textBlock1"
Text=
"{Binding ElementName=slider1, Path=Value}"
/>
<Slider Height=
"22"
Minimum=
"0"
Maximum=
"100"
HorizontalAlignment=
"Left"
Margin=
"135,346,0,0"
Name=
"slider1"
VerticalAlignment=
"Top"
Width=
"100"
/>
|
与上面等效的C#代码如下:
textBlock1.SetBinding(TextBlock.TextProperty,
new
Binding() { Path =
new
PropertyPath(
"Value"
), Source = slider1});
|
效果图:
2、绑定到Text.Length路径
XAML:
<TextBox Height=
"23"
HorizontalAlignment=
"Left"
Margin=
"37,48,0,0"
Name=
"textBox1"
Text=
"{Binding Path=Text.Length, ElementName=textBox2, Mode=OneWay}"
VerticalAlignment=
"Top"
Width=
"120"
/>
<TextBox Height=
"23"
HorizontalAlignment=
"Left"
Margin=
"37,92,0,0"
Name=
"textBox2"
VerticalAlignment=
"Top"
Width=
"120"
/>
|
与上面等效的C#代码如下:
textBox1.SetBinding(TextBox.TextProperty,
new
Binding() { Path =
new
PropertyPath(
"Text.Length"
),Source = textBox2, Mode=BindingMode.OneWay});
|
3、绑定到索引器
<TextBox Height=
"23"
HorizontalAlignment=
"Left"
Margin=
"37,48,0,0"
Name=
"textBox1"
Text=
"{Binding Path=Text.[2], ElementName=textBox2, Mode=OneWay}"
VerticalAlignment=
"Top"
Width=
"120"
/>
<TextBox Height=
"23"
HorizontalAlignment=
"Left"
Text=
"Work Hard"
Margin=
"37,92,0,0"
Name=
"textBox2"
VerticalAlignment=
"Top"
Width=
"120"
/>
|
此处等效的C#代码略
4、如果Binding的源是集合时,使用默认元素当Path使用,则语法如下
List<
string
> strCityList =
new
List<
string
>() {
"Hangzhou"
,
"Shanghai"
,
"Beijing"
};
textBox3.SetBinding(TextBox.TextProperty,
new
Binding(
"/"
) { Source = strCityList });
textBox4.SetBinding(TextBox.TextProperty,
new
Binding(
"/Length"
){Source = strCityList, Mode = BindingMode.OneWay});
textBox5.SetBinding(TextBox.TextProperty,
new
Binding(
"/[3]"
) { Source = strCityList, Mode = BindingMode.OneWay });
|
效果图如下:
5.没有Path的绑定
这是一种特殊的情况,Binding源本身就是数据且不需要Path来指明,string、int等基本类型就是这样,他们本身就是数据,无法指出通过那个属性访问这个数据,这时我们只需将Path设置成"."就可以了。请看下面的代码:
<Window.Resources>
<sys:String x:Key=
"myStr"
>
Work Hand Work Smart
</sys:String>
</Window.Resources>
|
XAML:
<TextBox Height=
"23"
HorizontalAlignment=
"Right"
Margin=
"0,65,199,0"
Text=
"{Binding Path=. ,Source={StaticResource ResourceKey=myStr}, Mode=OneWay}"
Name=
"textBox6"
VerticalAlignment=
"Top"
Width=
"141"
/>
|
下面的代码可以写成Text="{Binding Path=. ,Source={StaticResource ResourceKey=myStr}, Mode=OneWay}" 或Text="{Binding Source={StaticResource ResourceKey=myStr}, Mode=OneWay}"