我们在ScatterViewItem内部托管一个控件,该控件在运行时动态更改其大小,因为添加,删除和/或折叠了各种子元素。我们希望托管ScatterViewItem也可以调整大小以适应其子控件,但我们很难实现这一点。我们已经尝试了很多不同的东西,我们最接近的是挂接到子控件的SizeChanged事件并明确设置ScatterViewItem的宽度和高度,但这种方法仍有问题。
在XAML中定义ScatterViewItem及其内容时,ScatterViewItem的大小适当。我们希望在其内容更改大小时在运行时强制执行相同的行为。任何帮助将不胜感激。谢谢!
答案 0 :(得分:1)
您是否尝试过设置此处描述的样式:
http://msdn.microsoft.com/en-us/library/ee957369.aspx
在“绑定到内容大小”下?
绑定到内容大小
如ScatterView概述中所述,默认情况下为ScatterViewItem 不一定扩展或缩小到其内容的大小。 您可以显式设置a的高度和宽度属性 ScatterViewItem,但有时你的内容可能是一个控件 未知大小,或者您的内容可能有不同的大小。
在这种情况下,我们建议您绑定的尺寸 ScatterViewItem到内容的维度。要做到这一点,你需要 定义一个Style对象(通常在你的的Resources部分中) 主要应用窗口)。以下代码示例显示了一个Style 您可以应用于ScatterViewItem控件的对象声明 使其绑定到其内容的维度。
<Style x:Key="ScatterViewItemStyle" TargetType="{x:Type s:ScatterViewItem}">
<Setter Property="MinWidth" Value="{Binding Path=Content.MinWidth, RelativeSource={RelativeSource Self}, Mode=OneWay}"/>
<Setter Property="MinHeight" Value="{Binding Path=Content.MinHeight, RelativeSource={RelativeSource Self}, Mode=OneWay}"/>
<Setter Property="MaxWidth" Value="{Binding Path=Content.MaxWidth, RelativeSource={RelativeSource Self}, Mode=OneWay}"/>
<Setter Property="MaxHeight" Value="{Binding Path=Content.MaxHeight, RelativeSource={RelativeSource Self}, Mode=OneWay}"/>
<Setter Property="Width" Value="{Binding Path=Content.Width, RelativeSource={RelativeSource Self}, Mode=TwoWay}"/>
<Setter Property="Height" Value="{Binding Path=Content.Height, RelativeSource={RelativeSource Self}, Mode=TwoWay}"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type s:ScatterViewItem}">
<ContentPresenter />
</ControlTemplate>
</Setter.Value>
</Setter> </Style>
如果要创建使用维度的ScatterViewItem 它的内容,将样式应用于ScatterViewItem,如图所示 以下代码示例。
<s:ScatterViewItem Style="{StaticResource ScatterViewItemStyle}">
<Rectangle Height="250" Width="250" Fill="Red" /> </s:ScatterViewItem>