日期:2014-05-17  浏览次数:20882 次

WPF如何获取Template里面的一个控件的宽度?在线等!来者给分~~~~~~~~~~~~~~~~
本帖最后由 Leacoleaco 于 2012-10-29 16:20:30 编辑 先看代码:


<ScrollView>
  <ScrollView.Template>
    <ControlTemplate TargetType="{x:Type ScrollViewer}">
      <Canvas x:Key="SourceCanvas"/>
      <!--后面模版太多就不打了。。。-->
    </ControlTemplate >
  </ScrollView.Template>
  <Grid x:Key="ReSizeGrid " />
</ScrollView>


我需要把名为 ReSizeGrid 的Grid 宽度绑定到 scrollview 里面的名为 “SourceCanvas” Canvas 宽度上,请问如何绑定?

小弟跪谢了~在线等~
------最佳解决方案--------------------
如果按照你的说法,在外部套一个Grid,当horizontalalignment的时候宽度自然就合header的宽度一致而无需binding header width,是吧,

我觉得2个思路,1个是通过snoop仔细琢磨一下visualtree,2是考虑在空的时候换个template上去

------其他解决方案--------------------
可以foreach scrollview的children
然后通过VisualTreeHelper.GetChild去找子控件
就可以知道子控件的宽度了
------其他解决方案--------------------
<ScrollView>
  <ScrollView.Template>
    <ControlTemplate TargetType="{x:Type ScrollViewer}">
      <Canvas x:Key="SourceCanvas" Name="can"/>
      <!--后面模版太多就不打了。。。-->
    </ControlTemplate >
  </ScrollView.Template>
  <Grid x:Key="ReSizeGrid " Name="gr"/>
</ScrollView>


程序中代码 can.Width = gr.Width;

你可以按照上面的试试。。。


------其他解决方案--------------------
Width="{Binding ElementName=ReSizeGrid, Path=ActualWidth}
------其他解决方案--------------------
两个都直接 Width=“xx*“

------其他解决方案--------------------
直接  width 就可以了啊, 
------其他解决方案--------------------
自己先顶一个~
------其他解决方案--------------------
引用:
可以foreach scrollview的children
然后通过VisualTreeHelper.GetChild去找子控件
就可以知道子控件的宽度了


能给出具体代码嘛?不是很明白。。。
------其他解决方案--------------------
引用:
<ScrollView>
  <ScrollView.Template>
    <ControlTemplate TargetType="{x:Type ScrollViewer}">
      <Canvas x:Key="SourceCanvas" Name="can"/>
      <!--后面模版太多就不打了。。。-->
    </ControlTemplate >
……


我想在‘can’宽度发生改变的时候 gr 宽度也随之改变,所以才用绑定的方法,如果在程序中写can.Width = gr.Width;好像不能动态改变把
------其他解决方案--------------------
没有上下文这个问题没法回答啊,关键看你动机是什么,你确定的方法选择上是否正确,否则在错误的路上解决一个错误的问题,没有意义。。。

关于width,你得明白measure/arrange背后的故事。另外就你的问题来说,如果硬来,找到两个对象指针,遍历logictree,visualtree随便什么方法得到,通过后台Binding将两个Width对接也算是解决问题。
------其他解决方案--------------------
引用: