我有一个333x 344像素的图像,我在WPF中显示,它总是显示相同的大小,而不管窗口的大小。 图像位于dockpanel内,但将dockpanel更改为grid并没有帮助。
我怎样才能与窗户的大小成比例?
<Window>
<ScrollViewer>
<ItemSontrol>
<Usercontrol>
<Grid>
<DockPanel>
<Image/>
</DockPanel>
</Grid>
</Usercontrol>
</ItemSontrol>
</ScrollViewer>
</Window>
或
<ItemSontrol>
<Usercontrol>
<Grid>
<Grid>
<Image/>
</Grid>
</Grid>
</Usercontrol>
</ItemSontrol>
编辑:下面没有修复尺寸。 可以使用任何其他布局面板替换图像周围的DockPanel / Grid。其他人无法改变。
img.Stretch = Stretch.None
答案 0 :(得分:1)
将图像嵌入ViewBox并确保其父级将其大小限制为相应的窗口(如Grid
)
答案 1 :(得分:0)
从xaml代码中的图像中删除width,height,VerticalAligment和HorizontalAlignment属性。
答案 2 :(得分:0)
ItemsControl
的默认ItemsPanel是StackPanel
,它限制项目在“堆栈”方向上使用的空间(默认为垂直)。如果您将Stretch
设置为Fill
,您可能会看到它会拉伸以填充水平空间。解决方案是将面板模板更改为网格:
<ItemsControl>
<ItemsControl.ItemsPanelTemplate>
<ItemsPanelTemplate>
<Grid />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanelTemplate>
<UserControl>
...
</UserControl>
</ItemsControl>
但是在这种情况下,使用ItemsControl
是没有意义的,因为你用一个项目填充整个区域。 UserControl
现在是items集合中的第一个项目,任何其他项目将堆叠在网格中(除非您将行/列定义添加到面板模板网格并定义Grid.Row
和{关于项目的{1}}。您是否尝试为列表项创建背景或容器?在这种情况下,您可能应该定义Grid.Column
的{{1}}代替。