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 就可以了啊,
------其他解决方案--------------------自己先顶一个~
------其他解决方案--------------------
能给出具体代码嘛?不是很明白。。。
------其他解决方案--------------------
我想在‘can’宽度发生改变的时候 gr 宽度也随之改变,所以才用绑定的方法,如果在程序中写can.Width = gr.Width;好像不能动态改变把
------其他解决方案--------------------没有上下文这个问题没法回答啊,关键看你动机是什么,你确定的方法选择上是否正确,否则在错误的路上解决一个错误的问题,没有意义。。。
关于width,你得明白measure/arrange背后的故事。另外就你的问题来说,如果硬来,找到两个对象指针,遍历logictree,visualtree随便什么方法得到,通过后台Binding将两个Width对接也算是解决问题。
------其他解决方案--------------------