在silverlight的某个页面中,如果你想让控件A的宽度总是随着控件B的宽度变化,应该怎么办呢,答案就是元素属性绑定.

 

以下内容来自于http://silverlightchina.net/html/tips/2011/1225/12806.html

View Code
 1     <Grid x:Name="ContentPanel" Grid.Row="1"      Margin="12,0,12,0">
 2         <Grid.RowDefinitions>
 3             <RowDefinition Height="*" /> 
 4             <RowDefinition Height="*" /> 
 5             <RowDefinition Height="*" /> 
 6         </Grid.RowDefinitions> 
 7         <Slider Name="slider"  
 8                 Value="90"                     
 9                 Grid.Row="0"                    
10                 Maximum="180"                     
11                 Margin="24" /> 
12         <TextBlock Name="txtblk"                       
13                    Text="{Binding ElementName=slider, Path=Value}"
14                    Grid.Row="1"
15                    FontSize="48"
16                    HorizontalAlignment="Center"
17                    VerticalAlignment="Center" />

注意上述代码中的TextBock的属性Text绑定代码,我们也可以用一下形式精简:Text=”{Binding Value,ElementName=slider}”。

  另外还可以用下述另类的代码:Text=“{Binding ElementName=ContentPanel,Path=Children[0],Value}”。

  值得注意的是可以不用该绑定语法,用属性元素语法也能办到:

View Code
1 <TextBlock Name="txtblk"  
2            Grid.Row="1" 
3            FontSize="48" 
4            HorizontalAlignment="Center" 
5            VerticalAlignment="Center" > 
6     <TextBlock.Text> 
7         <Binding ElementName="slider" Path="Value"></Binding> 
8     </TextBlock.Text> 
9 </TextBlock>

Silverlight数据绑定也可以用C#代码,当然也是易忽视或用到少的方式,但也要引起重视地!

1               Binding binding = new Binding();
2               binding.ElementName = "slider";
3               binding.Path = new PropertyPath("Value");
4               //1.this.txtblk.SetBinding(TextBlock.TextProperty,binding);
5               //2.BindingOperations.SetBinding(this.txtblk,TextBlock.TextProperty,binding);

 

上述代码将名为slider的Silder元素的属性Value跟名为txtblk的TextBlock元素的属性Text绑定在了一起.

posted on 2012-04-16 10:39  xjbest  阅读(9805)  评论(0编辑  收藏  举报