我有这个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
的情况下获得相同的效果注意:我需要两个具有固定宽度尺寸的列和另一个使用窗口剩余宽度的列。
答案 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
。