XAML StackPanel内部项目大小问题

时间:2014-10-08 14:10:34

标签: c# wpf xaml visual-studio-2012

我有这个XAML代码:

    <StackPanel Orientation="Horizontal" Margin="0">
        <ScrollViewer VerticalScrollBarVisibility="Auto">
            <StackPanel x:Name="Miniaturas" Orientation="Vertical" MinWidth="100" Width="Auto" Grid.Column="0" Height="Auto" ScrollViewer.CanContentScroll="True">
            </StackPanel>
        </ScrollViewer>
        <Grid Margin="1">
            <WindowsFormsHost x:Name="VistaPrevia" Width="Auto"/>
        </Grid>
    </StackPanel>

我尝试做的是模拟两列。为什么?因为 WindowsFormsHost 无法存储到 ColumnDefinition ,会引发此错误:

无法添加值Type&#34; WindowsFormHost&#34;到#34; ColumnDefinitionCollection 的字典或集合。

通常我用以下代码执行此操作:

        <Grid Margin="1">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="120"/>
                <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>
            <WindowsFormsHost x:Name="VistaPrevia" Width="Auto"/>
        </Grid>

如何在不使用 ColumnDefinition

的情况下获得相同的效果

注意:我需要两个具有固定宽度尺寸的列和另一个使用窗口剩余宽度的列。

2 个答案:

答案 0 :(得分:1)

拉下VS2013 express并查看解析器中是否已修复该错误。还要验证是否已为Visual Studio 2012安装了更新4以查看它是否修复了该问题。

答案 1 :(得分:1)

您看到的错误是因为您做了类似这样的事情

    <Grid Margin="1">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="120"/>
            <ColumnDefinition Width="*"/>
            <WindowsFormsHost x:Name="VistaPrevia" Width="Auto"/><!-- fail -->
        </Grid.ColumnDefinitions>
    </Grid>

P.S。:答案是使用Grid