Проблемы с размером внутренних элементов XAML StackPanel

1

У меня есть этот код 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

Примечание. Мне нужны два столбца с размером фиксированной ширины, а другой - с оставшейся шириной окна.

  • 0
    что вы подразумеваете под "WindowsFormsHost не может быть сохранен в столбце определения"?
  • 0
    это приводит к ошибке «Не удается добавить значение типа« WindowsFormHost »в словарь или коллекцию типа« ColumnDefinitionCollection ».
Показать ещё 6 комментариев
Теги:
xaml
wpf
visual-studio-2012

2 ответа

1
Лучший ответ

Выдвиньте VS2013 express и проверьте, исправлена ли эта ошибка в синтаксическом анализаторе. Также убедитесь, что вы установили обновление 4 для Visual Studio 2012, чтобы узнать, исправляет ли он проблему.

  • 0
    Обновление 4 уже установлено
1

Ошибка, которую вы видели, происходит потому, что вы сделали что-то вроде этого

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

PS: и ответ - это использование Grid.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню