有没有办法将UI元素的宽度链接到另一个元素的宽度百分比?如果我的Datagrid是100px,我希望我的TextBlock是60%的60%(数据网格的宽度是动态的)。
答案 0 :(得分:0)
我认为这不是很难,或者是它?
myTextBox.Height = ((double)DataGrid.Height / 60) * 100
答案 1 :(得分:0)
在网格中,您可以为列提供比例宽度,例如:
<ColumnDefinition Width="5*"/>
<ColumnDefinition Width="3*"/>
第一个可能是DataGrid,第二个是TextBlock。这样TextBlock将具有DataGrid宽度的60%,并且还将响应大小更改。
答案 2 :(得分:0)
我可能这样做的方法是使用转换器 您可以将TextBlock的宽度绑定到DataGrid的ActualWidth,然后使用转换器来应用该因子。
public class MultiplyConverter : MarkupExtension, IValueConverter
{
public double Multiplier { get; set; }
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
double bound = System.Convert.ToDouble(value);
return bound * Multiplier;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return null;
}
public override object ProvideValue(IServiceProvider serviceProvider)
{
return this;
}
}
类似的东西:
Width="{Binding ActualWidth, ElementName=MyDataGrid, Converter={ui:MultiplyConverter Multiplier=.6}}"