wpf RelativeSource绑定

火影  金牌会员 | 2023-4-10 17:49:10 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 642|帖子 642|积分 1926

RelativeSource有四种类型

Self
FindAncestor
TemplatedParent
PreviousData
 
a.Self

Self用于绑定源和绑定目标相同的场景中。对象的一个属性与同一对象的另一个属性绑定。
例如,让我们取一个高度和宽度相同的椭圆。在XAML文件中添加下面给出的代码。宽度属性与高度属性相对绑定。
  1. <Grid>
  2.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  3.              Height="100"
  4.              Fill="Black" />
  5. </Grid>
复制代码
 
b.FindAncestor

FindAncestor
顾名思义,当绑定源是绑定目标的祖先(父级)之一时使用此选项。使用FindAncestor扩展,可以找到任何级别的祖先。
             
现在,让我们使用FindAncestor扩展将祖先的Name属性绑定到子元素button的Content属性。
  1. <Grid>
  2.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  3.              Height="100"
  4.              Fill="Black" />
  5. </Grid><Grid>
  6.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  7.              Height="100"
  8.              Fill="Black" />
  9. </Grid><Grid>
  10.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  11.              Height="100"
  12.              Fill="Black" />
  13. </Grid><Grid>
  14.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  15.              Height="100"
  16.              Fill="Black" />
  17. </Grid><Grid>
  18.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  19.              Height="100"
  20.              Fill="Black" />
  21. </Grid><Grid>
  22.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  23.              Height="100"
  24.              Fill="Black" />
  25. </Grid><Grid>
  26.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  27.              Height="100"
  28.              Fill="Black" />
  29. </Grid><Grid>
  30.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  31.              Height="100"
  32.              Fill="Black" />
  33. </Grid><Grid>
  34.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  35.              Height="100"
  36.              Fill="Black" />
  37. </Grid><Grid>
  38.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  39.              Height="100"
  40.              Fill="Black" />
  41. </Grid><Grid>
  42.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  43.              Height="100"
  44.              Fill="Black" />
  45. </Grid><Grid>
  46.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  47.              Height="100"
  48.              Fill="Black" />
  49. </Grid><Grid>
  50.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  51.              Height="100"
  52.              Fill="Black" />
  53. </Grid><Grid>
  54.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  55.              Height="100"
  56.              Fill="Black" />
  57. </Grid><Grid>
  58.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  59.              Height="100"
  60.              Fill="Black" />
  61. </Grid><Grid>
  62.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  63.              Height="100"
  64.              Fill="Black" />
  65. </Grid><Grid>
  66.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  67.              Height="100"
  68.              Fill="Black" />
  69. </Grid><Grid>
  70.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  71.              Height="100"
  72.              Fill="Black" />
  73. </Grid><Grid>
  74.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  75.              Height="100"
  76.              Fill="Black" />
  77. </Grid><Grid>
  78.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  79.              Height="100"
  80.              Fill="Black" />
  81. </Grid><Grid>
  82.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  83.              Height="100"
  84.              Fill="Black" />
  85. </Grid><Grid>
  86.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  87.              Height="100"
  88.              Fill="Black" />
  89. </Grid><Grid>
  90.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  91.              Height="100"
  92.              Fill="Black" />
  93. </Grid><Grid>
  94.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  95.              Height="100"
  96.              Fill="Black" />
  97. </Grid><Grid>
  98.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  99.              Height="100"
  100.              Fill="Black" />
  101. </Grid><Grid>
  102.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  103.              Height="100"
  104.              Fill="Black" />
  105. </Grid><Grid>
  106.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  107.              Height="100"
  108.              Fill="Black" />
  109. </Grid><Grid>
  110.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  111.              Height="100"
  112.              Fill="Black" />
  113. </Grid><Grid>
  114.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  115.              Height="100"
  116.              Fill="Black" />
  117. </Grid><Grid>
  118.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  119.              Height="100"
  120.              Fill="Black" />
  121. </Grid><Grid>
  122.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  123.              Height="100"
  124.              Fill="Black" />
  125. </Grid><Grid>
  126.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  127.              Height="100"
  128.              Fill="Black" />
  129. </Grid><Grid>
  130.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  131.              Height="100"
  132.              Fill="Black" />
  133. </Grid><Grid>
  134.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  135.              Height="100"
  136.              Fill="Black" />
  137. </Grid><Grid>
  138.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  139.              Height="100"
  140.              Fill="Black" />
  141. </Grid><Grid>
  142.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  143.              Height="100"
  144.              Fill="Black" />
  145. </Grid><Grid>
  146.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  147.              Height="100"
  148.              Fill="Black" />
  149. </Grid><Grid>
  150.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  151.              Height="100"
  152.              Fill="Black" />
  153. </Grid><Grid>
  154.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  155.              Height="100"
  156.              Fill="Black" />
  157. </Grid><Grid>
  158.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  159.              Height="100"
  160.              Fill="Black" />
  161. </Grid><Grid>
  162.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  163.              Height="100"
  164.              Fill="Black" />
  165. </Grid><Grid>
  166.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  167.              Height="100"
  168.              Fill="Black" />
  169. </Grid><Grid>
  170.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  171.              Height="100"
  172.              Fill="Black" />
  173. </Grid><Grid>
  174.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  175.              Height="100"
  176.              Fill="Black" />
  177. </Grid><Grid>
  178.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  179.              Height="100"
  180.              Fill="Black" />
  181. </Grid><Grid>
  182.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  183.              Height="100"
  184.              Fill="Black" />
  185. </Grid><Grid>
  186.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  187.              Height="100"
  188.              Fill="Black" />
  189. </Grid><Grid>
  190.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  191.              Height="100"
  192.              Fill="Black" />
  193. </Grid><Grid>
  194.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  195.              Height="100"
  196.              Fill="Black" />
  197. </Grid><Grid>
  198.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  199.              Height="100"
  200.              Fill="Black" />
  201. </Grid>
复制代码
 
c.TemplatedParent

TemplatedParent是一个属性,它使您能够创建一个包含少量未知值的控件模板。这些值取决于应用ControlTemplate的控件的属性。
  1. <Grid>
  2.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  3.              Height="100"
  4.              Fill="Black" />
  5. </Grid><Grid>
  6.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  7.              Height="100"
  8.              Fill="Black" />
  9. </Grid><Grid>
  10.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  11.              Height="100"
  12.              Fill="Black" />
  13. </Grid><Grid>
  14.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  15.              Height="100"
  16.              Fill="Black" />
  17. </Grid><Grid>
  18.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  19.              Height="100"
  20.              Fill="Black" />
  21. </Grid><Grid>
  22.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  23.              Height="100"
  24.              Fill="Black" />
  25. </Grid><Grid>
  26.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  27.              Height="100"
  28.              Fill="Black" />
  29. </Grid><Grid>
  30.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  31.              Height="100"
  32.              Fill="Black" />
  33. </Grid><Grid>
  34.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  35.              Height="100"
  36.              Fill="Black" />
  37. </Grid><Grid>
  38.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  39.              Height="100"
  40.              Fill="Black" />
  41. </Grid><Grid>
  42.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  43.              Height="100"
  44.              Fill="Black" />
  45. </Grid><Grid>
  46.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  47.              Height="100"
  48.              Fill="Black" />
  49. </Grid><Grid>
  50.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  51.              Height="100"
  52.              Fill="Black" />
  53. </Grid><Grid>
  54.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  55.              Height="100"
  56.              Fill="Black" />
  57. </Grid><Grid>
  58.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  59.              Height="100"
  60.              Fill="Black" />
  61. </Grid><Grid>
  62.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  63.              Height="100"
  64.              Fill="Black" />
  65. </Grid><Grid>
  66.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  67.              Height="100"
  68.              Fill="Black" />
  69. </Grid><Grid>
  70.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  71.              Height="100"
  72.              Fill="Black" />
  73. </Grid><Grid>
  74.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  75.              Height="100"
  76.              Fill="Black" />
  77. </Grid><Grid>
  78.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  79.              Height="100"
  80.              Fill="Black" />
  81. </Grid><Grid>
  82.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  83.              Height="100"
  84.              Fill="Black" />
  85. </Grid><Grid>
  86.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  87.              Height="100"
  88.              Fill="Black" />
  89. </Grid><Grid>
  90.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  91.              Height="100"
  92.              Fill="Black" />
  93. </Grid><Grid>
  94.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  95.              Height="100"
  96.              Fill="Black" />
  97. </Grid><Grid>
  98.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  99.              Height="100"
  100.              Fill="Black" />
  101. </Grid><Grid>
  102.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  103.              Height="100"
  104.              Fill="Black" />
  105. </Grid><Grid>
  106.     <Ellipse Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}"
  107.              Height="100"
  108.              Fill="Black" />
  109. </Grid>
复制代码
[code][/code] 
d.PreviousData

PreviousData这个用得很少,表示值相对于以前数据的变化。
 
最终效果图

 
 
文章导航 
A.Sql Server2005 Transact-SQL 新兵器学习
B.MCAD学习
C.代码阅读总结
D.ASP.NET状态管理
E.DB(数据库)
F.WAP
G.WinForm
H.Flex

希望上面提到的知识对您有所提示,同时欢迎交流和指正
作者:aierong
出处:http://www.cnblogs.com/aierong
贴子以"现状"提供且没有任何担保,同时也没有授予任何权利!
本文版权归作者所有,欢迎转载!
原创技术文章和心得,转载注明出处!这也是对原创者的尊重!


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

火影

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表