C# 相对于元素的边距

C# 相对于元素的边距,c#,xaml,windows-phone-8,alignment,C#,Xaml,Windows Phone 8,Alignment,如何将不同图元下方的图元与未知高度相对对齐? 我尝试的是创建一个转换器,获取不同元素的边距,并在它们之间添加所需的空间,但我不知道如何添加不同元素的高度以真正实现我想要的 这就是我所说的转换器: public class MargConv : IValueConverter { public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo cu

如何将不同图元下方的图元与未知高度相对对齐?

我尝试的是创建一个转换器,获取不同元素的边距,并在它们之间添加所需的空间,但我不知道如何添加不同元素的高度以真正实现我想要的

这就是我所说的转换器:

public class MargConv : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (targetType.Equals(typeof(Thickness)))
        {
            Thickness thick = (Thickness)value;
            thick.Top += 51;
            thick.Left = System.Convert.ToInt32(parameter) == 1 ? 22 : 151;

            return thick;
        }

        return value;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        Thickness thick = (Thickness)value;
        thick.Top -= 51;
        return thick;
    }
}
        <ScrollViewer HorizontalAlignment="Left" Height="699" VerticalAlignment="Top" Width="456">
            <Grid HorizontalAlignment="Left" Height="699" VerticalAlignment="Top" Width="456">
                <TextBlock Name="areat" HorizontalAlignment="Left" Margin="22,33,0,0" TextWrapping="Wrap" Text="איזור מגורים:" VerticalAlignment="Top"/>
                <TextBlock Name="area" HorizontalAlignment="Left" Margin="151,37,0,0" TextWrapping="Wrap" Text="{Binding Area}" VerticalAlignment="Top" FontSize="20"/>
                <TextBlock Margin="{Binding ElementName=area, Path=Margin, Converter={StaticResource margconv}, ConverterParameter=1}" HorizontalAlignment="Left" TextWrapping="Wrap" Text="תיאור משרה:" />
                <TextBlock Name="content"  HorizontalAlignment="Left" Margin="{Binding ElementName=area, Path=Margin, Converter={StaticResource margconv}, ConverterParameter=0}" TextWrapping="Wrap" Text="{Binding Content}" VerticalAlignment="Top" FontSize="20" />
                <TextBlock HorizontalAlignment="Left" Margin="{Binding ElementName=content, Path=Margin, Converter={StaticResource margconv}, ConverterParameter=1}" TextWrapping="Wrap" Text="תאריך עדכון:"/>
                <TextBlock Name="date" HorizontalAlignment="Left" Margin="{Binding ElementName=content, Path=Margin, Converter={StaticResource margconv}, ConverterParameter=0}" TextWrapping="Wrap" Text="{Binding Date}" VerticalAlignment="Top" FontSize="20"/>

                <TextBlock HorizontalAlignment="Left" Margin="{Binding ElementName=date, Path=Margin, Converter={StaticResource margconv}, ConverterParameter=1}" TextWrapping="Wrap" Text="דוא&quot;ל לחזרה:" VerticalAlignment="Top"/>
                <TextBox Name="email" HorizontalAlignment="Left" Height="72" Margin="{Binding ElementName=date, Path=Margin, Converter={StaticResource margconv}, ConverterParameter=0}" TextWrapping="Wrap" Text="{Binding RetEmail}" VerticalAlignment="Top" Width="303"/>
                <Button Content="שלח קו&quot;ח" HorizontalAlignment="Left" Margin="{Binding ElementName=email, Path=Margin, Converter={StaticResource margconv}, ConverterParameter=1}" VerticalAlignment="Top" Click="SendResume"/>
            </Grid>
        </ScrollViewer>
编辑:

我所说的XAML:

public class MargConv : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (targetType.Equals(typeof(Thickness)))
        {
            Thickness thick = (Thickness)value;
            thick.Top += 51;
            thick.Left = System.Convert.ToInt32(parameter) == 1 ? 22 : 151;

            return thick;
        }

        return value;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        Thickness thick = (Thickness)value;
        thick.Top -= 51;
        return thick;
    }
}
        <ScrollViewer HorizontalAlignment="Left" Height="699" VerticalAlignment="Top" Width="456">
            <Grid HorizontalAlignment="Left" Height="699" VerticalAlignment="Top" Width="456">
                <TextBlock Name="areat" HorizontalAlignment="Left" Margin="22,33,0,0" TextWrapping="Wrap" Text="איזור מגורים:" VerticalAlignment="Top"/>
                <TextBlock Name="area" HorizontalAlignment="Left" Margin="151,37,0,0" TextWrapping="Wrap" Text="{Binding Area}" VerticalAlignment="Top" FontSize="20"/>
                <TextBlock Margin="{Binding ElementName=area, Path=Margin, Converter={StaticResource margconv}, ConverterParameter=1}" HorizontalAlignment="Left" TextWrapping="Wrap" Text="תיאור משרה:" />
                <TextBlock Name="content"  HorizontalAlignment="Left" Margin="{Binding ElementName=area, Path=Margin, Converter={StaticResource margconv}, ConverterParameter=0}" TextWrapping="Wrap" Text="{Binding Content}" VerticalAlignment="Top" FontSize="20" />
                <TextBlock HorizontalAlignment="Left" Margin="{Binding ElementName=content, Path=Margin, Converter={StaticResource margconv}, ConverterParameter=1}" TextWrapping="Wrap" Text="תאריך עדכון:"/>
                <TextBlock Name="date" HorizontalAlignment="Left" Margin="{Binding ElementName=content, Path=Margin, Converter={StaticResource margconv}, ConverterParameter=0}" TextWrapping="Wrap" Text="{Binding Date}" VerticalAlignment="Top" FontSize="20"/>

                <TextBlock HorizontalAlignment="Left" Margin="{Binding ElementName=date, Path=Margin, Converter={StaticResource margconv}, ConverterParameter=1}" TextWrapping="Wrap" Text="דוא&quot;ל לחזרה:" VerticalAlignment="Top"/>
                <TextBox Name="email" HorizontalAlignment="Left" Height="72" Margin="{Binding ElementName=date, Path=Margin, Converter={StaticResource margconv}, ConverterParameter=0}" TextWrapping="Wrap" Text="{Binding RetEmail}" VerticalAlignment="Top" Width="303"/>
                <Button Content="שלח קו&quot;ח" HorizontalAlignment="Left" Margin="{Binding ElementName=email, Path=Margin, Converter={StaticResource margconv}, ConverterParameter=1}" VerticalAlignment="Top" Click="SendResume"/>
            </Grid>
        </ScrollViewer>


我想将其他文本块下面的文本块对齐,但不知道它们的高度(它们的文本是从某个数据源获取的,因此它不是静态的=>高度正在更改)。

如何将不同元素下面的元素相对地对齐到未知高度?
-使用
堆栈面板
,或者使用2个
行定义的
网格
。无论如何,发布相关的XAML。您不需要任何转换器。+1@HighCore,因为到目前为止,听起来/看起来您已经解决了复杂的问题。如果您试图显示某种临时覆盖,a或a可能是一种解决方案。@HighCore我用我所说的XAML编辑过。(虽然我的问题应该是一般性的)。@DanBarzilay,伙计,你做错了。这不是在WPF中进行布局的正确方法。为该网格创建适当的
行定义
列定义
,并相应地定位每个元素。