将元素的宽度绑定到另一个元素宽度的百分比

时间:2018-05-05 16:34:09

标签: c# wpf binding

有没有办法将UI元素的宽度链接到另一个元素的宽度百分比?如果我的Datagrid是100px,我希望我的TextBlock是60%的60%(数据网格的宽度是动态的)。

3 个答案:

答案 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}}"