Как Binding Converter для свойства элемента управления может получить доступ к другим свойствам элемента управления

Я пытаюсь привязать значение "MaxLines" к свойству TextBlock's Height в приложении WP7. В привязке есть конвертер, который должен умножить LineHeight на MaxLines и вернуть ожидаемую высоту. Я пытаюсь сказать, что я хочу контролировать количество строк, отображаемых в TextBlock. Как я смогу получить доступ к свойству LineHeight TextBlock из конвертера.

Чтобы сделать это универсальным, я не хотел поддерживать LineHeights отдельно или обращаться к ним из viewModel

2 ответа

Ознакомьтесь с этой статьей, Связывание данных Silverlight и преобразователи значений, где он объясняет, как связывать данные в Silverlight. В примере он использует ValueConverter с параметром value.

Я думаю, что это то, что вам нужно, просто привяжите свой LineHeight к параметру. (Вы можете использовать Blend для этого)

Вы можете использовать ConverterParameter:

<TextBlock x:Name="MyTextBlock" Height="{Binding ConverterParameter=Height, ElementName=MyTextBlock, Converter={StaticResource SomeConverter}}" Text="{Binding SomeLongText}" />

или передать весь текстовый блок:

<TextBlock x:Name="MyTextBlock" Height="{Binding Converter={StaticResource ImageFileConverter}, ElementName=DropdownImage}" Text="{Binding SomeLongText}" />

Тогда внутри контроллера:

public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            var image = value as TextBlock;
            /*do your magic here*/
}
Другие вопросы по тегам