我为ItemTemplate
获得了ItemsControl
,其内容会在我指定MinWidth
时被裁剪,导致宽度大于设置Width
容器,但不会发生削波。
下图显示了MinWidth
设置为100的按钮,而容器的Width
则绑定了更小的按钮,&#34可以看到;测试" 被切断。
<timeline:TimeControl.ItemTemplate>
<DataTemplate DataType="activityVm:WorkIntervalViewModel">
<Button
MinWidth="100"
Content="Test" />
</DataTemplate>
</timeline:TimeControl.ItemTemplate>
我的项容器派生自ContentControl
,并应用了以下模板:
<Style TargetType="{x:Type controls:TimeControlItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type controls:TimeControlItem}">
<ContentPresenter />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
导致此行为的原因是什么,以及如何保证内容永远不会被剪裁,而是获得最小请求宽度?
答案 0 :(得分:0)
我认为您的问题是由于TextBlock
给出了文本(Content
)的最小宽度造成的,但是它不可见,因为它居中并且您的父控件没有给它所需的宽度。试试这个:
<DataTemplate DataType="activityVm:WorkIntervalViewModel">
<Button MinWidth="100" HorizontalContentAlignment="Left" Content="Test" />
</DataTemplate>
答案 1 :(得分:0)
当ItemTemplate
内的内容大小超过容器大小时,似乎就会发生剪切,因此只需设置Width
而不是MinWidth
。
虽然我不完全理解这背后的机制,但我似乎记得Canvas
的度量阶段有些不同,所以我决定将ItemTemplate
中指定的控件包裹起来({{1}在前面的例子中)Button
。
Canvas
此按钮现在显示为100像素宽,即使它比项目容器中的尺寸宽。
如果有人知道这里的确切区别是什么,我仍然非常有兴趣了解这里发生了什么。