Есть задачка, окно в нем какой-нибудь компоновщик и в нем DataGrid, который должен иметь отступ от других элементам по краям Margin = 10.
Ниже приведены два варианта с StackPanel и Grid, так вот если использовать Grid, то все выглядит как и ожидалось, если взять StackPanel, то нет отступа снизу и нет прокрутки, ощущение что DataGrid "думает" что окно не имеет нижней границы и спокойно растягивает себя вниз, при этом окно только как бы "обрезает" изображение таблицы.
Хотелось бы понять почему StackPanel дает такое поведение ?
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:uc="clr-namespace:WpfControlLibrary2;assembly=WpfControlLibrary2"
Title="MainWindow" Loaded="Button_Click">
<StackPanel>
<DataGrid Margin="10" ItemsSource="{Binding}"></DataGrid>
</StackPanel>
</Window>
или так
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:uc="clr-namespace:WpfControlLibrary2;assembly=WpfControlLibrary2"
Title="MainWindow" Loaded="Button_Click">
<Grid>
<DataGrid Margin="10" ItemsSource="{Binding}"></DataGrid>
</Grid>
</Window>
На Loaded загружаются тестовые данные
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
var coll = new System.Collections.ObjectModel.ObservableCollection<NmValType>();
for (int i = 0; i <= 100; i++ )
{
coll.Add( new NmValType(){ Name = i.ToString(), NameValue = string.Format( "Значение {0}", i)});
}
DataContext = coll;
}
}
public class NmValType
{
public string Name { get; set; }
public string NameValue { get; set; }
}