TabItem中的ContentControl不会通过proberly调整大小

时间:2015-02-25 09:21:07

标签: c# wpf user-controls resize contentcontrol

ContentControl内有TabItemContentControl显示UserControl。我的问题是Width的{​​{1}}未设置为核心,它是通向大的方式。 ContentControl已正确显示。 我想Height,因为我有多个SizeToContent,大小不同。 我有以下代码:

MainWindow.xaml (简短版)

TabItems

<Window Height="350" Width="525" SizeToContent="WidthAndHeight"> <DockPanel> <TabControl DockPanel.Dock="Left" TabStripPlacement="Left"> <TabItem Header="BDE Config" IsEnabled="{Binding LoggedIn}"> <Grid> <ContentControl Content="{Binding CurrentViewModel}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/> </Grid> </TabItem> </TabControl> </DockPanel> 没有UserControl / Width Height。那么为什么Properties是正确的,而Height方式对我的屏幕来说是大的。

UserControl的XAML:

Width

2 个答案:

答案 0 :(得分:0)

这似乎与窗口上的SizeToContent属性和&#34; star-sizing&#34;之间的奇怪交互有关。在数据网格列上。

将窗口的SizeToContent属性设置为Height,并明确设置窗口的宽度,或者通过设置MaxWidth来限制星号列的宽度属性到一些合适的限制。

This thread on CodePlex描述了这个问题。显然,事情会变得更糟,因为会抛出异常!从该帖子最底层的帖子:

  

该例外情况已得到修复,但仍无法正常运作。当放置在具有(原文如此)的用户控件中时,没有固定的宽度,设置&#34; *&#34;在列宽上会导致列非常宽(几千个像素),这在设计时和运行时都会发生。


顺便说一句,您可以使用StackPanelDockPanel容器而不是使用Grid来删除很多的XAML标记。

答案 1 :(得分:0)

经过一番尝试,我找到了一个适合我的Answert。我做了以下事情:

MaxWidth="{x:Static SystemParameters.PrimaryScreenWidth}" WindowStartupLocation="CenterScreen" Left="{Binding winLeft, Mode=TwoWay}" Top="{Binding winTop, Mode=TwoWay}"

它将MaxWidth的{​​{1}}设置为Window,然后只要加载Screen Width加载User Control,它就会设置Star-Sized Columns到0,0。