Я создал однострочную сетку в xaml, а затем динамически добавляю строки в C#. Тем не менее, хотя они ПОЧТИ выстраиваются в линию, они не делают QUITE так. Почему это будет, когда код тот же?xaml и C# должны быть эквивалентными, но они не являются
Наиболее уместный часть XAML является:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="4*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="3*" />
<ColumnDefinition Width="2*" />
<ColumnDefinition Width="2*" />
</Grid.ColumnDefinitions>
Наиболее уместный часть C# является:
Grid grd = new Grid();
ColumnDefinition c0 = new ColumnDefinition();
c0.Width = new GridLength(1, GridUnitType.Star);
ColumnDefinition c1 = new ColumnDefinition();
c1.Width = new GridLength(1, GridUnitType.Star);
ColumnDefinition c2 = new ColumnDefinition();
c2.Width = new GridLength(1, GridUnitType.Star);
ColumnDefinition c3 = new ColumnDefinition();
c3.Width = new GridLength(4, GridUnitType.Star);
ColumnDefinition c4 = new ColumnDefinition();
c4.Width = new GridLength(1, GridUnitType.Star);
ColumnDefinition c5 = new ColumnDefinition();
c5.Width = new GridLength(3, GridUnitType.Star);
ColumnDefinition c6 = new ColumnDefinition();
c6.Width = new GridLength(2, GridUnitType.Star);
ColumnDefinition c7 = new ColumnDefinition();
c7.Width = new GridLength(2, GridUnitType.Star);
grd.ColumnDefinitions.Add(c0);
grd.ColumnDefinitions.Add(c1);
grd.ColumnDefinitions.Add(c2);
grd.ColumnDefinitions.Add(c3);
grd.ColumnDefinitions.Add(c4);
grd.ColumnDefinitions.Add(c5);
grd.ColumnDefinitions.Add(c6);
grd.ColumnDefinitions.Add(c7);
// Add it to the StackPanel
spNufan.Children.Add(grd);
Обновлено
Кажется, у меня есть выбирать между тем, чтобы все мои столбцы выстроились в линию и имели действительно широкий форму ИЛИ, позволяющую «ячейкам» обертывать с помощью выравнивания волнистой/волнистой колонны.
Сначала я имел обертку работает нормально, но колонны не были точно выровнены, но теперь, когда я добавил следующее (SharedSizeGroup элемент) к моему XAML:
<StackPanel x:Name="spNufan" Grid.IsSharedSizeScope="True"
Orientation="Vertical">
<Grid ShowGridLines="True" >
<Grid.ColumnDefinitions>
<ColumnDefinition SharedSizeGroup="ZeroethColumn" Width="*" />
<ColumnDefinition SharedSizeGroup="FirstColumn" Width="*" />
<ColumnDefinition SharedSizeGroup="SecondColumn" Width="*" />
<ColumnDefinition SharedSizeGroup="ThirdColumn" Width="4*" />
<ColumnDefinition SharedSizeGroup="FourthColumn" Width="*" />
<ColumnDefinition SharedSizeGroup="FifthColumn" Width="3*" />
<ColumnDefinition SharedSizeGroup="SixthColumn" Width="2*" />
<ColumnDefinition SharedSizeGroup="SeventhColumn" Width="2*" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0"
Margin="2"
TextAlignment="Left"
TextWrapping="Wrap"
. . .
... это нет больше не имеет (позволяют клеткам завернуть, как они должны), хотя у меня есть TextWrapping установлен на «Wrap»
Вот мой уместна C#:
Grid grd = new Grid();
grd.ShowGridLines = true;
ColumnDefinition c0 = new ColumnDefinition();
c0.Width = new GridLength(1, GridUnitType.Star);
c0.SharedSizeGroup = "ZeroethColumn";
. . .
spNufan.Children.Add(grd);
. . .
TextBlock tbDateTime = new TextBlock();
tbDateTime.Margin = _margin;
tbDateTime.Background = scb;
tbDateTime.TextWrapping = TextWrapping.Wrap;
tbDateTime.TextAlignment = TextAlignment.Left;
tbDateTime.VerticalAlignment = VerticalAlignment.Center;
tbDateTime.Text = ADateTime.ToString();
Grid.SetColumn(tbDateTime, LogParsePumpViewerConsts.GRID_COL_DATETIME);
grd.Children.Add(tbDateTime);
Можете ли вы предоставить скриншоты, чтобы визуально показать, как они отличаются? –
У вас есть автоматическое создание столбцов, установленных в true ..? если так установлено, что для false также этот spNufan.Children.Add (grd); похоже, что-то из сообщения здесь вчера .. для метода .Children.Add() – MethodMan
И вы тщательно проверили все настройки Margin и Padding? –