Как определить размер WindowsFormsHost?

Я использую WindowsFormsHost для отображения изображений 640x480. WindowsFormsHost отлично работает, используя Height="120" Width="160" и Grid.ColumnSpan="3", как это

<Grid Name="MainGrid" Margin="10 10 10 10">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="Auto"/>
    </Grid.ColumnDefinitions>
    <WindowsFormsHost Name="WindowsFormsHostL" Height="120" Width="160"
        HorizontalAlignment="Center" Grid.Row="0" Grid.Column="0" 
        Grid.ColumnSpan="3"/>

Но когда я пытаюсь удвоить размер WindowsFormsHost вот так

    <WindowsFormsHost Name="WindowsFormsHostL" Height="240" Width="320"
        HorizontalAlignment="Center" Grid.Row="0" Grid.Column="0" 
        Grid.ColumnSpan="3"/>

WindowsFormsHost верен в средстве просмотра .NET xaml, но кажется, что он становится меньше, выполните HorizontalAlignment="Left" и идите прямо. Этот

Debug.WriteLine(
      "WindowsFormsHostL.ActualHeight " + WindowsFormsHostL.ActualHeight
    + " WindowsFormsHostL.ActualWidth " + WindowsFormsHostL.ActualWidth);

печатает это

WindowsFormsHostL.ActualHeight 240 WindowsFormsHostL.ActualWidth 320

в поэтому среда выполнения, кажется, думает, что это правильно. Я делаю чистые сборки. Что я не понимаю? Почему я не могу просто увеличить размер этого WindowsFormsHost в xaml?


person jacknad    schedule 22.07.2013    source источник
comment
Если вы объявите WindowsFormsHost определенного размера, то, как правило, он будет именно такого размера. Вы уверены, что изображения не отображаются слишком маленькими в элементе управления WinForms вместо этого?   -  person Sheridan    schedule 22.07.2013
comment
Изображения для рендеринга на самом деле больше, 640x480. У меня есть другой код, который может сохранять изображения в формате .bmps (при нажатии кнопки), и в обоих случаях (WindowsFormsHost Height/Width 120x160 и 240x320) они сохраняются как 640x480.   -  person jacknad    schedule 22.07.2013
comment
К сожалению, я спросил не об этом... в вашем вопросе четко указан размер изображений. Я спрашивал, имеет ли какой-либо элемент управления изображением WinForms, в который вы загружаете изображения, установлен размер его размера.   -  person Sheridan    schedule 22.07.2013
comment
@ Шеридан Да. Размер изображения по умолчанию — 150x150. Теперь работает отлично. Если вы скопируете свой комментарий в ответ, я приму его. Бесконечно благодарен.   -  person jacknad    schedule 23.07.2013


Ответы (1)


Почему бы не установить определения строки и столбца для сетки в соответствии с размером, который вы хотите показать?

Определение строки:

<RowDefinition Height="240"/> 

Определение столбца:

<ColumnDefinition Width="320"/>

Затем установите горизонтальное и вертикальное выравнивание на «Растянуть»?

person Curtis    schedule 22.07.2013
comment
Это может сработать, но у меня есть другие элементы управления для последующих строк во всех 6 столбцах. - person jacknad; 22.07.2013