Привязать ширину элемента к проценту от ширины другого элемента - PullRequest
0 голосов
/ 05 мая 2018

Есть ли способ связать ширину элемента интерфейса с процентом ширины другого элемента? если мой Datagrid имеет размер 100px, я хочу, чтобы мой TextBlock составлял 60% от этого = 60px (ширина сетки данных является динамической).

Ответы [ 3 ]

0 голосов
/ 05 мая 2018

В Grid вы можете задать пропорциональную ширину для столбцов, например:

<ColumnDefinition Width="5*"/>
<ColumnDefinition Width="3*"/>

Первым может быть DataGrid, а вторым - TextBlock. Таким образом, TextBlock будет иметь 60% ширины DataGrid, а также будет реагировать на изменения размера.

0 голосов
/ 05 мая 2018

Вероятно, я сделаю это с помощью конвертера.
Вы можете привязать ширину TextBlock к ActualWidth DataGrid, а затем использовать конвертер для применения коэффициента.

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}}"
0 голосов
/ 05 мая 2018

Не думаю, что это очень сложно, или это так?

myTextBox.Height = ((double)DataGrid.Height / 60) * 100
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...