Дизайнер все красиво показывает:
На выходи выглядит так:
Вроде, в XAML ничего криминаль
<Label Content="Выбор проекта" Margin="40,84,633,378"/>
<ComboBox x:Name="projectBox" Margin="220,84,398,378" ItemsSource="{Binding Projects}" DisplayMemberPath="ProjectName" IsSynchronizedWithCurrentItem="True" />
У WPF всё устроено просто. Когда Grid
пытается разместить ваши элементы, он из области, в которой должен быть расположен ваш элемент (если у вас нет ни ColumnDefinitions
, ни RowDefinitions
, то это весь Grid
) вычитает слева 220 и справа 378, и в этой области пытается разместить элемент. Если оставшаяся область получается слишком маленькой, то элементу, понятно, даётся очень мало места, и он обрезается в отведённом месте. Вы можете легко увидеть это, потягав окно за правый нижний угол, чтобы оно меняло свои размеры.
Поведение у WinForms, судя по всему, не такое.
В WPF вам очень редко должно хотеться использовать Margin
для размещения элементов. Он должен использоваться только по прямому назначению: задавать небольшой визуальный отступ от края положенной области. К сожалению, при использовании встроенного дизайнера Студии расположение элементов часто устанавливается при помощи именно Margin
.
Правильный UI пишется на XAML'е вручную. (И если вы думаете, что вначале и через дизайнер покатит, то это не так, пишите вручную сразу.)
Для вашего случая может подойти что-то такое:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<DockPanel LastChildFill="True" Grid.Row="1" Margin="5">
<Label Content="Выбор проекта" DockPanel.Dock="Left" MaxWidth="150"/>
<ComboBox Margin="10,0,0,0" />
</DockPanel>
</Grid>
Результат:
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как с помощью Line Renderer связать два объекта в Unity3D, если такое возможно? Просто обычная визуальная связь, при которой, например, объекты могут...
Имеется несколько объектов на сцене, которые я хочу уничтожать по клику с помощью этой функции:
В разметке определил webbrowser