我ContentControl
内有TabItem
。 ContentControl
显示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
答案 0 :(得分:0)
这似乎与窗口上的SizeToContent
属性和&#34; star-sizing&#34;之间的奇怪交互有关。在数据网格列上。
将窗口的SizeToContent
属性设置为Height
,并明确设置窗口的宽度,或者通过设置MaxWidth
来限制星号列的宽度属性到一些合适的限制。
This thread on CodePlex描述了这个问题。显然,事情会变得更糟,因为会抛出异常!从该帖子最底层的帖子:
该例外情况已得到修复,但仍无法正常运作。当放置在具有(原文如此)的用户控件中时,没有固定的宽度,设置&#34; *&#34;在列宽上会导致列非常宽(几千个像素),这在设计时和运行时都会发生。
顺便说一句,您可以使用StackPanel
和DockPanel
容器而不是使用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。