У меня есть этот код 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, он выдает эту ошибку:
Невозможно добавить значение. Введите "WindowsFormHost" в словарь или коллекцию типа "ColumnDefinitionCollection".
Обычно я делаю это с помощью этого кода:
<Grid Margin="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="120"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<WindowsFormsHost x:Name="VistaPrevia" Width="Auto"/>
</Grid>
Как я могу сделать, чтобы получить тот же самый efect без использования ColumnDefinition
Примечание. Мне нужны два столбца с размером фиксированной ширины, а другой - с оставшейся шириной окна.
Выдвиньте VS2013 express и проверьте, исправлена ли эта ошибка в синтаксическом анализаторе. Также убедитесь, что вы установили обновление 4 для Visual Studio 2012, чтобы узнать, исправляет ли он проблему.
Ошибка, которую вы видели, происходит потому, что вы сделали что-то вроде этого
<Grid Margin="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="120"/>
<ColumnDefinition Width="*"/>
<WindowsFormsHost x:Name="VistaPrevia" Width="Auto"/><!-- fail -->
</Grid.ColumnDefinitions>
</Grid>
PS: и ответ - это использование Grid
.