有一个很好的方法来做到这一点?我已经研究过创建一个自定义面板来替换网格或包含ScrollVIEwer,但是在MeasureOverrIDe / ArrangeOverrIDe调用期间我没有得到一个可以告诉我网格行的最终宽度/高度的调用/列我关心(例如,第0行,第0列).
我有一个想法是从GrID派生并调用基础MeasureOverrIDe / ArrangeOverrIDe但在调用之前从网格的子项中删除ScrollVIEwer(并在之后将其放回),但在布局计算期间弄乱可视树似乎是馊主意.
这是一个例子:
<GrID x:@R_403_6889@="LayoutRoot" Background="White"> <GrID VerticalAlignment="top" HorizontalAlignment="left"> <GrID.RowDeFinitions> <RowDeFinition/> <RowDeFinition/> </GrID.RowDeFinitions> <GrID.ColumnDeFinitions> <ColumnDeFinition/> <ColumnDeFinition/> </GrID.ColumnDeFinitions> <ScrollVIEwer GrID.Row="0" GrID.Column="0" ScrollVIEwer.HorizontalScrollbarVisibility="auto" ScrollVIEwer.VerticalScrollbarVisibility="auto"> <button Height="300" WIDth="300"/> </ScrollVIEwer> <button GrID.Row="1" GrID.Column="0" Height="100" WIDth="100" Content="1,0"/> <button GrID.Row="0" GrID.Column="1" Height="100" WIDth="100" Content="0,1"/> <button GrID.Row="1" GrID.Column="1" Height="100" WIDth="100" Content="1,1"/> </GrID></GrID>
我希望GrID的大小不会随着ScrollVIEwer中button的大小的变化而改变 – 例如,我希望GrID为ScrollVIEwer提供100×100的平方,该平方由GrID的其余内容决定.如果我将3个100×100按钮中的每个按钮更改为200×200,我希望ScrollVIEwer获得200×200等等.
Pavlo的例子到目前为止让我最接近,网格行/列的大小合适,但是当调用Arrange时,ScrollVIEwer不适应给定的大小.见下文:
解决方法 如果我理解你想要的东西,那么你可以做以下技巧.在Measure阶段创建一个要求0空间的装饰器,并在Arrange阶段安排具有所有给定空间的子项:public class NoSizeDecorator : Decorator{ protected overrIDe Size MeasureOverrIDe(Size constraint) { // Ask for no space Child.Measure(new Size(0,0)); return new Size(0,0); } }
而你的XAML将如下所示:
<GrID x:@R_403_6889@="LayoutRoot" Background="White"> <GrID VerticalAlignment="top" HorizontalAlignment="left"> <GrID.RowDeFinitions> <RowDeFinition/> <RowDeFinition/> </GrID.RowDeFinitions> <GrID.ColumnDeFinitions> <ColumnDeFinition/> <ColumnDeFinition/> </GrID.ColumnDeFinitions> <my:NoSizeDecorator GrID.Row="0" GrID.Column="0"> <ScrollVIEwer ScrollVIEwer.HorizontalScrollbarVisibility="auto" ScrollVIEwer.VerticalScrollbarVisibility="auto"> <button Height="300" WIDth="300" Content="0,0"/> </ScrollVIEwer> </my:NoSizeDecorator> <button GrID.Row="1" GrID.Column="0" Height="100" WIDth="100" Content="1,1"/> </GrID></GrID>总结
以上是内存溢出为你收集整理的在确定大小时,使WPF / SL网格忽略子元素全部内容,希望文章能够帮你解决在确定大小时,使WPF / SL网格忽略子元素所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)