XAML StackPanel内部项大小问题

本文关键字:问题 StackPanel 内部 XAML | 更新日期: 2023-09-27 18:25:54

我有这个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"WindowsFormHost"添加到"ColumnDefinitionCollection"类型的字典或集合

通常我用这个代码来做这件事:

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

在不使用ColumnDefinition的情况下,如何获得相同的效果

注意:我需要两列,一列宽度固定,另一列使用窗口的剩余宽度。

XAML StackPanel内部项大小问题

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

您看到的错误是因为您执行了类似的操作

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

附言:答案是使用Grid