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="דוא"ל לחזרה:" 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="שלח קו"ח" 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="דוא"ל לחזרה:" 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="שלח קו"ח" 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中进行布局的正确方法。为该网格创建适当的行定义
和列定义
,并相应地定位每个元素。