WPF .NET4.0内容控件在屏幕外增长

时间:2011-05-12 19:51:28

标签: c# .net wpf

我遇到了一个令我感到沮丧的问题。显示的内容在屏幕外增长。即没有应用窗口大小。

以下是我尝试的内容:

<Window ...
        d:DesignHeight="768" d:DesignWidth="1024"
        MinHeight="768" MinWidth="1024"  
        mc:Ignorable="d" SizeToContent="WidthAndHeight"
        WindowStartupLocation="CenterScreen"  WindowState="Maximized"
        Closed="WindowClosed" Loaded="Window_Loaded">

我已尝试在主机和主窗口上设置MaxWidthMaxHeight但仍然没有运气。

并在Window后面的代码中:

protected override void OnSourceInitialized(EventArgs e)
    {
        base.OnSourceInitialized(e);
        MinWidth = ActualWidth;
        MinHeight = ActualHeight;
        ClearValue(SizeToContentProperty);
    }

主机控件上的代码:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="40"/>
        <RowDefinition Height= "*"/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>
    <ContentControl x:Name="content"
                    Grid.Row="1" Grid.Column="0" Content="{Binding ContentToDisplay}"
                    VerticalAlignment="Stretch"  VerticalContentAlignment="Stretch"
                    HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch"/>
</Grid>

我曾尝试将ContentControl放在ViewBox DockPanel中,但仍然没有运气。一旦我将内容设置为“大”(在ScrollViewer之内),它就不会包含它。我想要实现的是简单地在屏幕内容纳内容控件中的内容。

谢谢!

2 个答案:

答案 0 :(得分:3)

也许作为一种解决方法,你可以听到SizeChanged并在点击屏幕尺寸时禁用自动调整大小?

答案 1 :(得分:2)

您有一个标记为SizeToContent =“WidthAndHeight”的窗口,因此内容将按其包含的大小调整。那个没有发布,所以很难说是什么导致了它。您是否使用DataBinding设置任何大小,例如?

此外,您没有将窗口的最大宽度和高度设置为屏幕大小。这至少可以防止它变得比屏幕大。

最好的办法可能是将窗口设置为特定大小,然后在代码隐藏中,在Loaded事件中,将窗口设置为所需大小,或者将其设置为加载后最大化。